config.json

nconf wrapper that simplifies work with environment specific configuration files.

config.json

nconf wrapper that simplifies work with environment specific configuration files.

config.json is easy to use; it:

  • loads the default configuration file;
  • loads environment specific configuration file and overrides defaults;

and then:

  • uses environment variables;
  • and command-line arguments to override data from configuration files.
npm install config.json

The top-level of config.json is a function that loads configuration file with the given filepath.

vi sample.json
{
  "domain": "www.example.com",
  "mongodb": {
    "host": "localhost",
    "port": 27017
  }
}
vi sample.development.json
{
  "domain": "dev.example.com"
}

Note: Environment specific configuration files should be in the same directory as the default one.

vi sample.js
var config = require('config.json')('./sample.json');
 
console.log("domain:", config.domain);
console.log("mongodb:\n",
  "host:", config.mongodb.host, "\n",
  "port:", config.mongodb.port);

Run the above script:

NODE_ENV=development node ./sample.js --mongodb:host "dharma.mongohq.com" --mongodb:port 10065

The output will be:

domain: dev.example.com
mongodb:
 host: dharma.mongohq.com
 port: 10065

Environment can be set by passing env argument:

var developmentConfig = require('config.json')('./sample.json', 'development');
var productionConfig = require('config.json')('./sample.json', 'production');

filepath can be empty if your configuration file is in the current working directory of the process and is called config.json.

Released under the MIT license.