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