@promotively/config
v1.0.4
Published
Universal/isomorphic javascript library for configuration file fetching.
Downloads
1
Readme
@promotively/config
Universal/isomorphic javascript library for configuration file fetching.
Why?
- You need a simple and consistent cross platform interface to handle runtime configuration file management.
- 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.
- You don't wan't to use webpack.DefinePlugin.
Installation
With Yarn
yarn add @promotively/config
With NPM
npm install @promotively/config
Example
A working example is available inside the /example
folder.
Run node example/app.js
to see your current environment and config.
Documentation
The source code is documented using JSDoc syntax and documentation is generated using esdoc.
Once you have executed yarn docs
documentation is available inside the dist/docs
folder.
Documentation for the most recent release is also available online.
Setup
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
}
Usage
// 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.
API
| Function | Arguments | Description |
| ---------------- | ---------------------- | -------------------------------------------------------------- |
| getEnvironment
| (options) | Fetches the environment using NODE_ENV or an ENVIRONMENT file. |
| getConfig
| (environment, options) | Set the data loading state. |
Linting
This library uses @promotively/eslint-config for its ESLint configuration.
yarn lint
Tests
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.
Contact
Feel free to reach out using any of the below methods:
License
MIT