vigour-config
vigour-config
allows you to easily make highly configurable services that are easy to test and launch in a variety of ways. Let's make an example service to understand how it works:
Requirements: Design your service as a class receiving a config object in the constructor
lib/index.js
'use strict'var Config = moduleexports = exports = Service { var myIP = ip // If the object received is not a `vigour-config` observable if !config instanceof Config // Make the config object a `vigour-config` observable config = config thisconfig = config // an observable console // Get property values with `.val` var plainConfig = thisconfig // Turn observable into a regular object with `.plain()` console // Now you don't need the `.val`}Serviceprototype { /* ... */ }
see observable
Making a binary executable for your service
bin/executable.js
#!/usr/bin/env node'use strict' var Service = var service = servicestart
Provide default configuration values, command-line argument descriptions and environment variable names
You can configure the configurations options for your service in its package.json package.json
Configure and launch your service
Using the binary executable
Using only default values
./bin/executable.js
Environment variables
export MY_SERVICE_SOME_PROPERTY='Configured via env var'export MY_SERVICE_DEEP_PROPERTY='ENV'./bin/executable.js
Command line arguments
./bin/executable.js --someProperty 'Configured via CLI arg' --deeper.property 'CLI ARG'
JSON
./bin/executable.js --deeper '{"property":"CLI ARG"}'
Config file(s)
./bin/executable.js --mergeFiles config.json
config.json
Multiple config files
./bin/executable.js --mergeFiles '["config.json","moreConfig.js"]'
Requiring your module
Using only default values
var Service = var service = servicestart
Passing in configuration
var Service = var config = someProperty: 'via params' deeper: property: 'via params!' var service = configservicestart