Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/democracyos/config
Node configuration json files loader. Overrideable by environment variables. Very opinionated.
https://github.com/democracyos/config
configuration environment node server variable
Last synced: 1 day ago
JSON representation
Node configuration json files loader. Overrideable by environment variables. Very opinionated.
- Host: GitHub
- URL: https://github.com/democracyos/config
- Owner: DemocracyOS
- License: mit
- Created: 2016-01-04T19:08:08.000Z (almost 9 years ago)
- Default Branch: master
- Last Pushed: 2020-05-30T10:53:52.000Z (over 4 years ago)
- Last Synced: 2024-10-04T06:18:46.129Z (about 1 month ago)
- Topics: configuration, environment, node, server, variable
- Language: JavaScript
- Homepage:
- Size: 89.8 KB
- Stars: 6
- Watchers: 3
- Forks: 1
- Open Issues: 11
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
Config
======[![Build Status](https://travis-ci.org/DemocracyOS/config.svg?branch=master)](https://travis-ci.org/DemocracyOS/config) [![Greenkeeper badge](https://badges.greenkeeper.io/DemocracyOS/config.svg)](https://greenkeeper.io/)
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**
```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**
```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**
```javascript
module.exports = require('democracyos-config')({
path: __dirname
})
```5- Use it:
**And, in your `/server.js`, or wherever:**
```javascript
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`
* `Arrays`s should be strings separated by commas.
* e.g.: `"staff": ["[email protected]", "[email protected]"]` => `STAFF="[email protected],[email protected]"`
* `Boolean`s should be `true` or `false` as strings.
* e.g.: `"rssEnabled": false` => `RSS_ENABLED="false"`
* `Objects`s 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
* MIT
* © 2017 [Demoracia en Red](http://democraciaenred.org)
* More details under [LICENSE](https://github.com/DemocracyOS/config/blob/master/LICENSE)