Universal/isomorphic javascript/typescript library for configuration file fetching.
- You need a simple and consistent cross platform interface to handle runtime configuration file management.
- You can't embed your configurations using solutions like like dotenv or webpack.DefinePlugin because you need to have a single set of build artifacts that can be deployed to any environment.
- You want to use the same configuration across your browser and server apps or development tool configuration files.
- You want the ability to quickly change configurations or environments without having to perform application builds.
With Yarn
yarn add @promotively/config
With NPM
npm install @promotively/config
A working example is available inside the /example
folder.
Run node example/app.js
to see your current environment and config.
The source code is documented using JSDoc syntax and documentation is generated using jsdoc.
Once you have executed yarn docs
documentation is available inside the dist/docs
folder.
Documentation for the most recent release is also available online.
Create a file config/ENVIRONMENT
containing the word development.
Create a file config/development.json
containing your app config for development usage.
Create a file config/production.json
containing your app config for production usage.
// (optional) config/ENVIRONMENT
development
// config/development.json
{
"APP_PROTOCOL": "http",
"APP_DOMAIN": "localhost",
"APP_PORT": 5000
}
// config/production.json
{
"APP_PROTOCOL": "https",
"APP_DOMAIN": "app.promotively.com",
"APP_PORT": 443
}
// app.js
import { getEnvironment, getConfig } from '@promotively/config';
const fetchConfig = async () => {
try {
const environment = await getEnvironment();
const config = await getConfig(environment);
const result = { environment, config });
console.info(result);
return result;
} catch (error) {
throw error;
}
};
export default fetchConfig;
In the above example when using getEnvironment()
the NODE_ENV environment variable will be used if set otherwise an ENVIRONMENT variable/file will be used. (global > environment > file)
You can also use a different environment variable or a global variable by configuring options.file with the name of the variable.
Function | Arguments | Description |
---|---|---|
getEnvironment |
(options) | Fetches the environment using NODE_ENV or an ENVIRONMENT file. |
getConfig |
(environment, options) | Set the data loading state. |
This library uses @promotively/eslint-config for its ESLint configuration.
yarn lint
This library has 100% unit test code coverage.
Code coverage is available inside the dist/coverage
folder after running yarn test
.
Code coverage for the most recent release is also available online.
Feel free to reach out using any of the below methods:
MIT