$ npm install pelias-config
Create a new Pelias config:
var config = require('pelias-config');
// use the default settings
var settings = config.defaults;
var config = require('pelias-config');
// generate development specific settings
var settings = config.generate();
the easiest way to get a custom config is to create a file named ~/pelias.json
.
you can copy the example file from here: https://github.com/pelias/config/blob/master/config/local.json
this file will be checked for settings whenever you run imports and will override the defaults; it is particularly useful for specifying datasource paths during development.
sysadmin and ops engineers can override the default settings on the server by launching any code which requires this module by supplying an ENV var with the path to their custom json config.
$ PELIAS_CONFIG=/path/to/settings/file.json node app.js
Note: by default the merge is deep (it replaces the defaults with any properties that are present in the env config). The developer can disable deep merging to use only local configuration settings.
var config = require('pelias-config');
// shallow merge config settings from a path supplied in the env var
var settings = config.generate( false );
// deep merge config settings from a path supplied in the env var
var settings = config.generate( true );
var settings = config.generate();
You can test the result of merging your env config with the following bash oneliner:
npm install pelias-config; \
PELIAS_CONFIG=/path/config.json \
node -e "console.log( require('pelias-config').generate().stringify() );";
Aside from deep
, the generate
function takes an additional parameter named schema
that uses Joi to validate that the configuration is useable. An error is thrown if the generated configuration does not validate against the schema.
The generated config will be a mergeable object:
var config = require('pelias-config'),
settings = config.generate();
// strip out all functions etc and produce a plain js object copy
var copy = settings.export();
You can pretty print the generated config:
var config = require('pelias-config'),
settings = config.generate();
console.log( settings.stringify() );
see https://github.com/pelias/mergeable for a full list of methods
The pelias-config
npm module can be found here:
https://npmjs.org/package/pelias-config
Please fork and pull request against upstream master on a feature branch.
Pretty please; provide unit tests and script fixtures in the test
directory.
$ npm test
Travis tests every release against Node.js 4 and 6