A simple nconf wrapper that supports multiple stages (environments via NODE_ENV) and provides sane configuration file lookups on *nix systems.
$ npm install @sphericalelephant/senodeconf
lib/config.js
NODE_ENV=development
// lib/myconfig.js
module.exports = require('senodeconfig')('my-app');
// other file
const config = require('lib/myconfig');
config.get('my:setting'); // can be used like nconf
merges the following configurations in the following order:
- ./development.conf.json
- ~/.my-app/development.conf.json
- /etc/my-app/development.conf.json
The settings within the global config in /etc/ are overridden by the user specific configuration in ~, which are in turn overridden by any settings made in the local config file placed in the current working directory.
lib/config.js
module.exports = require('senodeconfig')('my-app', {
// array of allowed environments (NODE_ENv), defaults to ['production', 'staging', 'development', 'local', 'test'];
allowedEnv: [],
// sets the default environment that is used when NODE_ENV has not been specified, defaults to 'development'
// careful: defaultEnv must be an allowedEnv
defaultEnv: 'environment',
// allows adjusting the config file name, %%STAGE%% must be used exacly once, as it is substituted
configFileNameTemplate: '%%STAGE%%_custom_config_name.json',
// allows setting a custom env variable separator, default is "_"
envSeparator: '__'
});