# JavaScript Instructions ## General Rules - **Never edit files inside `wwwroot/` directly.** All JS output files are generated by the Gulp build pipeline. - After adding or modifying JS source files, ensure they are listed in `Fuchs/bdlconfig.json` under the correct bundle and context. ## Source File Locations | Type | Path | |------|------| | Core intranet JS | `Fuchs/js/intranet/` | | Feature module JS | `Fuchs/js/intranet/modules//` | ## Bundle Contexts Each bundle in `bdlconfig.json` has a `context` field that determines which page(s) load it: | Context | Loaded on | |---------|-----------| | `intranet` | All intranet pages | | `intranet:inv` | Invoices module only | | `intranet:req` | Requests module only | | `intranet:rep` | Reports module only | | `intranet:bam` | BAM module only | ## Adding a JS File to a Bundle Locate the correct bundle entry in `Fuchs/bdlconfig.json` by matching the `context` and `outputFileName`, then add the source path to `inputFiles`: ```json { "context": "intranet:inv", "outputFileName": "web/fis.inv.de.js", "inputFiles": [ "js/intranet/modules/invoices/invoices.js", "js/intranet/modules/invoices/your-new-file.js" ], "minify": { "enabled": true } } ``` Files listed in `inputFiles_tominify` are minified individually before concatenation (use for third-party scripts that should be minified separately). ## Adding a New Module 1. Create `Fuchs/js/intranet/modules//.js`. 2. If the module needs styles, create `Fuchs/js/intranet/modules//.scss`. 3. Add both files to the appropriate bundle entries in `bdlconfig.json`. 4. Run `npx gulp all` from the `Fuchs/` directory to rebuild. ## npm Packages Use packages already declared in `Fuchs/package.json` where possible. Available runtime packages: | Package | Global / Usage | |---------|----------------| | `jquery` | DOM, AJAX | | `js-cookie` | Cookie read/write | | `fg-loadcss` | Async CSS loading | | `tinymce` | Rich text editor | Do not import npm packages directly in source files — they are copied to `web/` by `gulp copy` and referenced via bundle entries in `bdlconfig.json`. ## Build Commands Run from the `Fuchs/` directory: ```powershell cd Fuchs npx gulp min:js # rebuild JS bundles only npx gulp all # full rebuild (JS + CSS + copy) ```