Config manager
A configuration manager for NodeJS. It helps you to organize your project and the different configurations of your environments.
Installation
npm install --save node-config-manager
Usage
Structure
In a project, it's often necessary to have multiple environments (test, development, preproduction, production, etc.). ConfigManager offers a simple and intuitive architecture to organize it.
Example :
config/
release/ (release env)
logger.json
db.json
develop/ (develop env)
logger.json
db.js
test/ (test env)
db.json
logger.js (default logger configuration)
db.js (default db configuration)
lambda.json (default lambda configuration)
The config directory can be overridden by environment variables (NODE_CONFIG_DIR='./config') or when ConfigManager is initialized (#ConfigManager.prototype.init) .
Initialize
Environment variables
Name | Type | Default | Description |
---|
NODE_CONFIG_DIR | String | ./config | Config directory path |
NODE_ENV | String | -- | Node environment |
NODE_CAMEL_CASE | Boolean | false | Naming convention of variables |
Method init
If you don't like to configure with environment variables, you can initialize the different variables in JavaScript by using prototype init method.
var cfgManager = require('node-config-manager'),
options = {
configDir: './config',
env: 'test',
camelCase: true
};
cfgManager.init(options);
Manage your configurations
After the configuration of the module, you can use the configuration store everywhere.
Add a configuration
In the first step, ConfigManager will search for the config file which matches with the current environment.
Example - test environment :
config/
test/ (test env)
db.json
logger.js (default logger configuration)
db.js (default db configuration)
var cfgManager = require('node-config-manager');
cfgManager.addConfig('db')
.addConfig('logger');
In the second step, ConfigManager will replace the loaded configurations by environment variables if they exist.
Example - app.json :
{
"host": "localhost",
"port": 80,
"fstKey": {
"sndKey": "custom_key_1",
"copyHost": "custom_key_2"
}
}
And with the following environment variables :
export APP__HOST="127.0.0.1"
export APP__FST_KEY__SND_KEY="anyKey"
export APP__FST_KEY__COPY_HOST="${APP__HOST}"
Result :
{
"host": "127.0.0.1",
"port": 80,
"fstKey": {
"sndKey": "anyKey",
"copyHost": "127.0.0.1"
}
}
Get a configuration
After adding your configuration, there are two methods to get your configuration :
var appCfgByGetConfig = cfgManager.getConfig('app'),
appCfgByMethod = cfgManager.method.App();
console.log(appCfgByGetConfig.host);
console.log(appCfgByMethod.port);
If the config doesn't exist :
- first case : return "null",
- second case : throw exception "undefined is not a function"
Remove a configuration
You can delete a configuration with the removeConfig method.
cfgManager.removeConfig('app');
Testing
From the repo root:
npm install
npm test