env-configuration
v0.1.3
Published
Configuration manager feeding values from Env Vars and driven by objects or JSON files
Downloads
16
Maintainers
Readme
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-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!