node package manager
Easy collaboration. Discover, share, and reuse code in your team. Create a free org »

env-configuration

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.

Version

0.1.3

Build Status

Post all your comments and bug reports to @martinswiderski

Installation

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

$ npm install --save env-configuration

Usage

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:

 
config.loadObject({
    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

envConfig.loadJSON('./configuration.json');

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 
    console.log(configuration.get('system'));
    hard-coded-value
    
    // callback added 
    console.log(configuration.get('system', function(contents){
        return contents.toUpperCase();
    }));
    HARD-CODED-VALUE

Getting application config values processed with a callback

Get (from 0.1.3) supports a callback:

    console.log(config.get('proxy'));
    http://yourProxy:8080 

Getting values from package.json

Call get method:

    console.log(config.package.jsonpath('$..dependencies.system'));
    0.1.3

Ensuring config is valid

Just call method returning true|false

config.isValid();

Good luck!