configurations
v3.0.0configurations
Loads configuration files depending on the environment, the users individual configuration, additional configuration files that are explicitly defined and CLI parameters.
Interface
configuration#load(baseDir, additionalParameters)
Creates a configurations hash out of several overlapping configuration files.
baseDir
the directory configurations are loaded fromadditionalParameters
optional additional Parameters e.g. from cli arguments
Logic
Default Configuration
The config file default.(js|json)
is always loaded and is the base configuration.
Environment Configuration
The environment is used to load an additional configurations file.
Naming convention is {environment}.(js|json)
.
The environment configuration is optional.
User Configuration
For local development an configuration individual for every developer is useful.
Will be only loaded if the environment is development
.
Naming convention is user.{userName}.(js|json)
.
The user configuration is optional.
Additional parameters
Additonal parameters can be specified via a options hash that will be merged into the configuration. cli arguments are a possible source.
External optional additional Configuration
Via the parameters hash the path to an additonal configurations file can be specified.
The key for the options hash os externalconfig
.
Example
default.js
module.exports = {
foo: 'bar',
bax: 'baz',
spam: 'eggs'
};
/foo/bar/optionalConfig.js
module.exports = {
spam: 'eggs222'
};
Call
var path = require('path');
var c = require('configurations');
var configuration = c.load(path.join(__dirname, '/config'), {
bax: 'bazzzz',
externalconfig: '/foo/bar/optionalConfig.js'
});
Result
{
foo: 'bar',
bax: 'bazzzz',
spam: 'eggs222'
}
Example 2
The file example/example.js
contains the following content:
var configuration = configurations.load(path.join(__dirname, '/config'), {
externalconfig: path.join(__dirname, 'config', 'optional.js'),
foo: 'foo-cli'
});
Run it with the following parameters:
#1
$ NODE_ENV=development node example/example.js
result:
{ "a": "b", "foo": "foo-cli", "bax": "baz-development", "spam": "eggs2" }
#2
$ NODE_ENV=production node example/example.js
result:
{ "a": "b", "foo": "foo-cli", "bax": "baz-production", "spam": "eggs2" }
#3
$ NODE_ENV=foo node example/example.js
result:
{ "a": "b", "foo": "foo-cli", "bax": "baz", "spam": "eggs2" }