node package manager
Love JavaScript? Your insights can make it even better. Take the 2017 JavaScript Ecosystem Survey »


Node.js env-configuration

NodeJS configuration set/get and reader for package.json data Configuration management tool feeding values from environment variables, files and code.



Build Status

Post all your comments and bug reports to @martinswiderski


To include code in your project and add it permanently as dependency to your *package.json file run following:

$ npm install --save env-configuration


This configuration tool approaches application configuration from a new angle. It uses JS objects or JSON files but only to drive mapping to config object property.

Basic configuration of object itself

It provides reset method diverse behaviour when comes across an error.

Use in your project:

var envConfig = require('env-configuration');

If you want not include details of your package JSON go:

var envConfig = require('env-configuration').readPackage('./package.json');

Set throw exceptions on each error:

envConfig.options({ errors: "throw" }); // throw exception 

Or start gathering errors in a common envConfig.errors array

envConfig.options({ errors: "collect" }); // or log 

Driving configuration from an object

You can pass a mapping object directly to config:

    proxy: {
        source: 'environment', // reads from env vars 
        reference: 'http_proxy'
    system: {
        source: 'declaration',  // sets value below as declared here 
        reference: 'my system name'
    json_config: {
        source: 'declaration',
        reference: '{"hello":"world","iam":{"many":"names"}}' // JSON as string 

Or, you can pass a JSON file (of the same structure)as argument


Using multiple drivers (files and objects together and/or more than one)

You can drive config from JSON and from object. merging configs from multiple sources and overloading values of one another (last value set for given key wins).

Getting application config values

Calling get with a declared function:

    console.log(configuration.get('json_config', JSON.parse));
    { hello: 'world', iam: { many: 'names' } }

Calling get with a anonymous function:

    // no callback 
    // callback added 
    console.log(configuration.get('system', function(contents){
        return contents.toUpperCase();

Getting application config values processed with a callback

Get (from 0.1.3) supports a callback:


Getting values from package.json

Call get method:


Ensuring config is valid

Just call method returning true|false


Good luck!