Below is an overview of the different kinds of configuration we have.
Fixed configuration
| name | description | source |
|---|---|---|
| webpack config | main webpack configuration | repo:/build-tools/config/webpack/webpack.config.*.js |
| build options | Default values for build options (see build options in dynamic config table below) | repo:/build-tools/config/default.buildoptions.js |
| eslint | Configuration for JS linter | repo:/.eslintrc and repo:/.esilntignore |
| editorconfig | Code style options to be used by IDE | repo:/.editorconfig |
| scss lint | Config for scss linter | repo:/scss-lint.yml |
| package.json | npm module dependencies + npm scripts definitions | repo:/package.json |
| yarn.lock | lockfile for alternative package manager. used by by build server instead of npm to lock down package versions | repo:/yarn.lock |
| jsdoc config | Configuration to render this documentation | repo:/docs/conf.json and repo:/docs/tutorials/tutorials.json |
| jsdoc template | Custom build of docstrap jsdoc template | repo:/docs/template/ |
Dynamic configuration
| name | description* | parsed at | source | parsed by |
|---|---|---|---|---|
| themes | Styling differences per market | buildtime | repo:/theme | custom webpack loaders in respository:/build-tools |
| build options | Webpack build options per microservice per target (browser vs nodejs) per mode (development vs distribution) | buildtime | repo:/<microservice>/config/webpack/<microservice>-<web/node>-<dist/dev>.buildoptions.json | repo:/build-tools/config/BuildOptionsManager.js |
| configdefinitions | Application options per microservice | buildtime | repo:/<microservice>/config/<microservice>.json | config-injector-loader in frontend repo |
| environment config | Application options per environment | runtime | repo:/config/<environment>.json + overrides in azure appsettings | node-config JS module (see https://github.com/lorenwest/node-config) |
| localized copy | Copy definitions per market | correct copy bundle for market is passed at buildtime. messages are parsed from that bundle at runtime. | repo:/<microservice>/src/app/locale/<locale>.i18n + various <locale>.json files throughout frontend repo | locale-loader in frontend repo to create copy bundles per market. LocaleProvider component in frontend repo to read messages from bundle |
* A market refers to localization (e.g. US, UK). A microservice refers to different deployment targets (e.g. member, account, admin).