Painless configuration for Node apps with defaults file, environment variables, arguments, function parameters.
defaults file < process.env < command line arguments < function call override
Create your config object:
var qconf = require('../qconf.js'),
config = qconf(); // 99% of the time, this is all you need!
Create a JSON file: ./config/config.json
{
"default_setting": true,
"envOverride": false,
"arg_override": false,
"param_override": false
}
Maybe source some environment variables:
export env_override=true
Try a command-line option:
node myfile.js --arg-option true
Painless configuration for your apps!
Got sick of the complexity of nconf. Don't try to be everything to everybody. Just get a simple job done with simple code.
This is the function that gets imported when you require qconf.
Creates a configuration singleton object for your app by reading configuration settings from a defaults file, environment variables, command line arguments, and finally a function parameters hash, in reverse priority.
- @param {Object} [overrides] A map of config keys and values.
- @param {Array} || {String} [filesPath] An array of config files in order of precedence (least to most) or path to the defaults file. Can be the only parameter.
- @return {Object} config A configuration object.
- @return {Function} config.get The get method
Clear the existing configuration. This is typically used to clear out any settings prior to reloading configuration with a subsequent call to qconf()
.
The config object is the object returned when you call qconf()
. This is the getter and setter for all your app's environment variables.
Return the value of the attribute requested.
- @param {String} attr The name of the attribute to return.
- @return {Any} The value of the requested attribute.
Set the value of an attribute.
- @param {String} attr The name of the attribute to set.
- @param {Any} value The value to set the attribute to.
- @return {Object} The config object (for chaining).
The config object is an event emitter.
config.get()
will emit the event 'undefined' if the value of the variable in question is undefined
. It will also emit a convenient, searchable message that you can log and easily find in your logs:
'WARNING: Undefined environment variable: ' + `attr`
attr
refers to the name of the variable you tried to get.
For example:
var qconf = require('qconf'),
config = qconf(),
util = require('util');
config.on('undefined', function (msg, attr) {
util.log(msg);
// or build a custom message:
util.log('WAT? Can\'t find ' + attr);
});
config.get('some_var');
// Logs:
// "WARNING: Undefined environment variable: some_var"
// "WAT? Can't find some_var"