env-configuration v0.1.3
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
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-configurationUsage
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 exceptionOr start gathering errors in a common envConfig.errors array
envConfig.options({ errors: "collect" }); // or logDriving 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-VALUEGetting application config values processed with a callback
Get (from 0.1.3) supports a callback:
console.log(config.get('proxy'));
http://yourProxy:8080Getting values from package.json
Call get method:
console.log(config.package.jsonpath('$..dependencies.system'));
0.1.3Ensuring config is valid
Just call method returning true|false
config.isValid();Good luck!