1.0.5 • Published 9 years ago
vigour-config v1.0.5
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 = require('vigour-config')
module.exports = exports = Service
function Service (config) {
var myIP = ip.address()
// If the object received is not a `vigour-config` observable
if (!(config instanceof Config)) {
// Make the config object a `vigour-config` observable
config = new Config(config)
}
this.config = config // an observable
console.log('someProperty', this.config.someProperty.val) // Get property values with `.val`
var plainConfig = this.config.plain() // Turn observable into a regular object with `.plain()`
console.log('someProperty', plainConfig.someProperty) // Now you don't need the `.val`
}
Service.prototype.start = function () { /* ... */ }
see observable
Making a binary executable for your service
bin/executable.js
#!/usr/bin/env node
'use strict'
var Service = require('../')
var service = new Service()
service.start()
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
{
"vigour": {
"someProperty": {
"val": "default value",
"description": "Printing during the Service instance creation",
"_env": "MY_SERVICE_SOME_PROPERTY"
},
"deeper": {
"property": {
"val": "default",
"description": "Currently not used",
"_env": "MY_SERVICE_DEEP_PROPERTY"
}
}
}
}
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
{
"someProperty": "Configured via a config file"
}
Multiple config files
./bin/executable.js --mergeFiles '["config.json","moreConfig.js"]'
Requiring your module
Using only default values
var Service = require('./lib/')
var service = new Service()
service.start()
Passing in configuration
var Service = require('./lib/')
var config = {
someProperty: 'via params',
deeper: {
property: 'via params!'
}
}
var service = new Service(config)
service.start()
1.0.5
9 years ago
1.0.4
9 years ago
1.0.3
9 years ago
1.0.2
9 years ago
1.0.1
9 years ago
1.0.0
9 years ago
0.1.0
9 years ago
0.0.14
9 years ago
0.0.13
9 years ago
0.0.12
9 years ago
0.0.11
9 years ago
0.0.10
9 years ago
0.0.9
10 years ago
0.0.8
10 years ago
0.0.7
10 years ago
0.0.6
10 years ago
0.0.5
10 years ago
0.0.4
10 years ago
0.0.3
10 years ago
0.0.2
10 years ago
0.0.1
10 years ago