Configuration manager for node apps. Keep all your default settings on a json file, and override them per environment, using another file or environment variables.
| DISCLAIMER: Use https://github.com/DemocracyOS/dos-config, unless you want to customize default options.
npm i democracyos-config -S
1- Create defaults.json
file. It will define the schema of the config,
including default values and types it should have:
/config/defaults.json
{
"port": 3000,
"title": "My awesome app Defaults"
}
2- Environment specific overrides are optional, using {NODE_ENV}.json
or
development.json
as default:
/config/development.json
{
"title": "My awesome app on Development"
}
3- Only commit default values! You wouldn't want to commit any keys, etc.
/config/.gitignore
*.json
!defaults.json
4- Load your config, specify the path to where all the config files are located.
/config/index.js
module.exports = require('democracyos-config')({
path: __dirname
})
5- Use it:
And, in your /server.js
, or wherever:
var config = require('./config')
console.log(config.title) // My awesome app on Development
You can also define values using environment variables, this is the recommended
approach for production
.
- Var names should be CONSTANT_CASE.
- e.g.:
mongoUrl
=>MONGO_URL
- Scoped variables e.g.:
user.password
=>USER_PASSWORD
- e.g.:
Arrays
s should be strings separated by commas.- e.g.:
"staff": ["[email protected]", "[email protected]"]
=>STAFF="[email protected],[email protected]"
- e.g.:
Boolean
s should betrue
orfalse
as strings.- e.g.:
"rssEnabled": false
=>RSS_ENABLED="false"
- e.g.:
Objects
s should be a JSON string.- e.g.:
"connectionData": {}
=>CONNECTION_DATA='{"ip": "127.0.0.1", "port": 45333}'
- e.g.:
- For more info, Types are casted using
/lib/cast-string.js
npm run test
- MIT
- © 2017 Demoracia en Red
- More details under LICENSE