Intro | Quick start | Quick start (ES6) | API | Contributors
Why not
config?
Answer. TL;DR: config separates data to different files based on NODE_ENV, not resources.
$ npm install no-config // config.js module.exports = { redis: { init: function (params) { return require('redis').createClient(params) }, default: { db: 0, port: 6379 }, development: { host: '127.0.0.1' }, production: { db: 1, host: '192.168.0.10' } } }// index.js require('no-config')({ config: require('./config') }).then( function(conf) { console.log('ENV', conf.env) console.log('Redis:', conf.redis.host+':'+conf.redis.port) conf.redis.instance.set('hello', 'world') } )$ NODE_ENV=development node index.js ENV development Redis: 127.0.0.1:6379 Since no-config returns a promise it is much better to use ES6 generators, arrow functions and co.
If you are not familiar with co, check this step-by-step tutorial
// config.js module.exports = { redis: { init: params => require('redis').createClient(params), default: { db: 0, port: 6379 }, development: { host: '127.0.0.1' }, production: { db: 1, host: '192.168.0.10' } } }// index.js 'use strict' const co = require('co') co(function* () { let config = require('./config') let conf = yield require('no-config')({config}) console.log('ENV', conf.env) console.log('Redis:', conf.redis.host+':'+conf.redis.port) conf.redis.instance.set('hello', 'world') })require('no-config')(parameters)Loads resources from parameters.config based on NODE_ENV environment variable. Returns a Promise which resolves ones all resources are initialized.
Parameters
| Name | Required? | Type | Default | Description |
|---|---|---|---|---|
config | Required | Object | Configuration object | |
init | Optional | List of strings | All Resources | Resources to initialize |
verbose | Optional | Boolean | false | Print resource input prior to call its init() function |
mask_secrets | Optional | Boolean | true | if verbose === true will hide input value if its key contains substrings: secret, token, key, pass or pwd |
Every high-level key in configuration object is a resource name.
| Name | Required? | Type | Default | Description. Handling |
|---|---|---|---|---|
<RESOURCE> | Optional | Object | Resource configuration | |
<RESOURCE>.default | Optional | Object | {} | Default values |
<RESOURCE>.<ENV> | Optional | Object | {} | ENV specific values. If a key duplicates default key, env-specific value is used |
<RESOURCE>.init | Optional | Function, Generator function | Called to initalize resource, <RESOURCE>.init(result). If returns Promise or Generator, it got resolved with co. Result is saved to result.instance. |
Fedor Korshunov - view contributions
Anurag Sharma - view contributions