Configuration manager feeding values from Env Vars and driven by objects or JSON files
NodeJS configuration set/get and reader for package.json data
Configuration management tool feeding values from environment variables, files and code.

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:
``bash`
$ 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.
It provides reset method diverse behaviour when comes across an error.
Use in your project:
`javascript`
var envConfig = require('env-configuration');
If you want not include details of your package JSON go:
`javascript`
var envConfig = require('env-configuration').readPackage('./package.json');
Set throw exceptions on each error:
`javascript`
envConfig.options({ errors: "throw" }); // throw exception
Or start gathering errors in a common envConfig.errors array
`javascript`
envConfig.options({ errors: "collect" }); // or log
You can pass a mapping object directly to config:
`javascript
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
`javascript`
envConfig.loadJSON('./configuration.json');
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).
Calling get with a declared function:
`javascript`
console.log(configuration.get('json_config', JSON.parse));
{ hello: 'world', iam: { many: 'names' } }
Calling get with a anonymous function:
`javascript`
// 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
Get (from 0.1.3) supports a callback:
`javascript`
console.log(config.get('proxy'));
http://yourProxy:8080
Call get method:
`javascript`
console.log(config.package.jsonpath('$..dependencies.system'));
0.1.3
Just call method returning true|false
`javascript``
config.isValid();
Good luck!