cfg
Configuration management for node.js.
Example config:
module.exports = {
db: {
password: 'abcde',
host: '127.0.0.1',
},
port: 3000,
hosts: ['127.0.0.1'],
logsDir: `${__dirname}/logs`,
$env_production: {
port: 80,
logsDir: '/home/app/logs',
},
$env_test: {
port: 5000,
},
$env_CI: {
db: {
host: 'postgresql',
},
},
};
Usage:
const cfg = require('@smpx/cfg');
const dbConf = cfg('db');
const dbPassword = cfg('db.password');
Docs
It reads values from config.js
file from project directory, but they can be overwritten with another config.js
in the private
folder in the project directory. Or through env vars in this format:
CFG__DB__PASSWORD='password' yarn start
CFG__HOSTS_1='new-host.region.rds.amazonaws.com' yarn start
NOTE: ENV VARS override might only work with camelCase keys
It basically uses lodash.set internally. The path is generated by removing the CFG__
prefix and replacing __
with .
and converting each word in between to camelCase (also through lodash).
NODE_ENV & CI overrides
cfg also allows overriding config according to NODE_ENV or CI environment variables. For example if NODE_ENV="production", then if a $env_production
key exists it's value gets merged over existing conf (this happens before merging any private/config.js
file).
Similarly in CI environments, the value in $env_CI
is merged.
API
Please check out the typescript definition file: index.d.ts for a overwview of all the functions provided.
CLI
Get a value from cfg.js
cfg get redis.port
cfg get logsDir
CFG__DB__PASSWORD='password' cfg get "db.password"
npx cfg get redis.port
yarn cfg get logsDir