Hierarchical fleng configuration with YAML files and atomic object merging.
npm install --save fleng-config
var fconf = require('fleng-config');
// Initialize config provider
var config = new fconf.Provider(__dirname);
// Add default.yaml file as `default` store
config.add('default', 'config/default.yaml');
// Add development.yaml file as `environment` store
config.add('environment', 'config/development.yaml');
// Add an object literal as `overrides` store
config.add('overrides', {
group: {
property: 'value'
}
});
// Add defaults store
config.defaults('global', { group: { property: 'value' } });
// Add overrides store
config.overrides('important', { group: { property: 'value' } });
// Explicitly set value at path `group.property`. It cannot be overrided
config.set('group.property', 'updated value');
// Get full config as an object
config.get();
// Get `group` branch of config
config.get('group');
// Get value at path `group.property`
config.get('group.property');
Create a new config provider. Optional parameter root
sets the directory
against which file paths will be resolved. If omitted process.cwd()
will be
used.
Add a store to the config provider. If filePath
is passed provider will
try to load a file from that path. The path is resolved against root
passed
to the constructor or process.cwd()
. If an object literal was passed as second
argument, it will be added to the config provider as is.
Get a value by the path passed. If value was not found, method will return
undefined
.
Set a value at the passed path. Values set with this method could not be overrided later.
Add a default store. Values from this store will be used if they were not found in generic and overrides stores.
Add an override store. Values from this store will not be overrided by generic or defaults stores.
Module source is in ES6 module syntax. It's built using Babel.js.
Install development dependencies:
npm install -d
and run:
make
Tests are written using mocha and should.js library. To run testing install development dependencies:
npm install -d
and run:
npm test
MIT.