Skip to content
master
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
lib
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

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.
    • e.g.: "staff": ["mail@eg.com", "a@c.m"] => STAFF="mail@eg.com,a@c.m"
  • 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

About

Node configuration json files loader. Overrideable by environment variables. Very opinionated.

Topics

Resources

License

Packages

No packages published
You can’t perform that action at this time.