Config
A configuration file handler. Config can load configuration files from a local file system or a remote server.
Once the config module is initialized you can access config properties as you would a simple POJOs JavaScript object.
Examples
Load a local file
const config = ;config ;
Load a remote file
const config = ;config; ;
Load from an object
const config = require('fwsp-config');
config.init({
hydra: {
serviceName: 'offers-service',
serviceIP: '',
servicePort: 7000,
serviceType: 'offers',
serviceDescription: 'Phone validation for use with first ride class offers',
redis: {
url: 'redis', port: 6379, db: 15
}
}
})
.then(() => {
console.log(config.hydra);
});
**Usage**
The `config` module returns a Promise and resolves if it successful loaded and parsed a configuration file, otherwise it rejects. This allows you to sequence application concerns which require configuration data until after the configuration is loaded.
## Sharing config files
Sometimes multiple instances of a service might share the same configuration file. To support this use-case, `config` allows you to define a local configuration file with a location field that specifies the remote location where a configuration file can be found.
```javascript
{
"location": "http://services.com/imageprocesser/properties.json"
}
Retrieving a plain JS object
The config
module behaves like a JavaScript object once it has configuration files loaded. However, for times when you really do what a pure JS object you can use the getObject()
method:
const config = ;config ;
Overriding config properties
Config allows you to use plain JavaScript setter patterns to update a loaded configuration file. This is useful in a shared configuration file scenario where each service loads a config file and needs to override one or more fields.
const config = ;config ;
Implementation details
This config
module is implemented using ES6 Proxy support and so it requires NodeJS 6.2.1 or greater Chrome 49 or greater.
Tests
This project has a series of mocha tests in the specs
folder.
To run them you'll need mocha installed:
$ npm install mocha -g
then just:
$ npm run test