Skip to content

Latest commit

 

History

History
89 lines (66 loc) · 2.31 KB

README.md

File metadata and controls

89 lines (66 loc) · 2.31 KB

Config

Build Status Greenkeeper badge

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.

Install

npm i democracyos-config -S

Usage

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

Environment Variables

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
  • Arrayss should be strings separated by commas.
  • Booleans should be true or false as strings.
    • e.g.: "rssEnabled": false => RSS_ENABLED="false"
  • Objectss should be a JSON string.
    • e.g.: "connectionData": {} => CONNECTION_DATA='{"ip": "127.0.0.1", "port": 45333}'
  • For more info, Types are casted using /lib/cast-string.js

Tests

npm run test

License