configurations
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
moduleexports = foo: 'bar' bax: 'baz' spam: 'eggs';
/foo/bar/optionalConfig.js
moduleexports = spam: 'eggs222';
Call
var path = ;var c = ; var configuration = c;
Result
foo: 'bar' bax: 'bazzzz' spam: 'eggs222'
Example 2
The file example/example.js
contains the following content:
var configuration = configurations;
Run it with the following parameters:
#1
$ NODE_ENV=development node example/example.js
result:
#2
$ NODE_ENV=production node example/example.js
result:
#3
$ NODE_ENV=foo node example/example.js
result: