Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/lorenwest/node-config
Node.js Application Configuration
https://github.com/lorenwest/node-config
config deployment properties registry settings state
Last synced: 3 months ago
JSON representation
Node.js Application Configuration
- Host: GitHub
- URL: https://github.com/lorenwest/node-config
- Owner: node-config
- License: other
- Created: 2010-12-02T00:33:11.000Z (almost 14 years ago)
- Default Branch: master
- Last Pushed: 2024-06-03T15:39:00.000Z (5 months ago)
- Last Synced: 2024-06-11T18:11:43.096Z (5 months ago)
- Topics: config, deployment, properties, registry, settings, state
- Language: JavaScript
- Homepage:
- Size: 2.38 MB
- Stars: 6,222
- Watchers: 76
- Forks: 488
- Open Issues: 60
-
Metadata Files:
- Readme: README.md
- Changelog: History.md
- License: LICENSE
Awesome Lists containing this project
- awesome-star-libs - lorenwest / node-config
README
Configure your Node.js Applications
===================================[![NPM](https://nodei.co/npm/config.svg?downloads=true&downloadRank=true)](https://nodei.co/npm/config/)
[![Build Status](https://secure.travis-ci.org/node-config/node-config.svg?branch=master)](https://travis-ci.org/lorenwest/node-config)
[release notes](https://github.com/node-config/node-config/blob/master/History.md)Introduction
------------Node-config organizes hierarchical configurations for your app deployments.
It lets you define a set of default parameters,
and extend them for different deployment environments (development, qa,
staging, production, etc.).Configurations are stored in [configuration files](https://github.com/node-config/node-config/wiki/Configuration-Files) within your application, and can be overridden and extended by [environment variables](https://github.com/lorenwest/node-config/wiki/Environment-Variables),
[command line parameters](https://github.com/node-config/node-config/wiki/Command-Line-Overrides), or [external sources](https://github.com/lorenwest/node-config/wiki/Configuring-from-an-External-Source).This gives your application a consistent configuration interface shared among a
[growing list of npm modules](https://www.npmjs.org/browse/depended/config) also using node-config.Project Guidelines
------------------* *Simple* - Get started fast
* *Powerful* - For multi-node enterprise deployment
* *Flexible* - Supporting multiple config file formats
* *Lightweight* - Small file and memory footprint
* *Predictable* - Well tested foundation for module and app developersQuick Start
---------------
The following examples are in JSON format, but configurations can be in other [file formats](https://github.com/node-config/node-config/wiki/Configuration-Files#file-formats).**Install in your app directory, and edit the default config file.**
```shell
$ npm install config
$ mkdir config
$ vi config/default.json
```
```js
{
// Customer module configs
"Customer": {
"dbConfig": {
"host": "localhost",
"port": 5984,
"dbName": "customers"
},
"credit": {
"initialLimit": 100,
// Set low for development
"initialDays": 1
}
}
}
```**Edit config overrides for production deployment:**
```shell
$ vi config/production.json
``````json
{
"Customer": {
"dbConfig": {
"host": "prod-db-server"
},
"credit": {
"initialDays": 30
}
}
}
```**Use configs in your code:**
```js
const config = require('config');
//...
const dbConfig = config.get('Customer.dbConfig');
db.connect(dbConfig, ...);if (config.has('optionalFeature.detail')) {
const detail = config.get('optionalFeature.detail');
//...
}
````config.get()` will throw an exception for undefined keys to help catch typos and missing values.
Use `config.has()` to test if a configuration value is defined.**Start your app server:**
```shell
$ export NODE_ENV=production
$ node my-app.js
```Running in this configuration, the `port` and `dbName` elements of `dbConfig`
will come from the `default.json` file, and the `host` element will
come from the `production.json` override file.Articles
--------* [Configuration Files](https://github.com/node-config/node-config/wiki/Configuration-Files)
* [Special features for JavaScript configuration files](https://github.com/node-config/node-config/wiki/Special-features-for-JavaScript-configuration-files)
* [Common Usage](https://github.com/node-config/node-config/wiki/Common-Usage)
* [Environment Variables](https://github.com/node-config/node-config/wiki/Environment-Variables)
* [Reserved Words](https://github.com/node-config/node-config/wiki/Reserved-Words)
* [Command Line Overrides](https://github.com/node-config/node-config/wiki/Command-Line-Overrides)
* [Multiple Node Instances](https://github.com/node-config/node-config/wiki/Multiple-Node-Instances)
* [Sub-Module Configuration](https://github.com/node-config/node-config/wiki/Sub-Module-Configuration)
* [Configuring from a DB / External Source](https://github.com/node-config/node-config/wiki/Configuring-from-an-External-Source)
* [Securing Production Config Files](https://github.com/node-config/node-config/wiki/Securing-Production-Config-Files)
* [External Configuration Management Tools](https://github.com/node-config/node-config/wiki/External-Configuration-Management-Tools)
* [Examining Configuration Sources](https://github.com/node-config/node-config/wiki/Examining-Configuration-Sources)
* [Using Config Utilities](https://github.com/node-config/node-config/wiki/Using-Config-Utilities)
* [Upgrading from Config 0.x](https://github.com/node-config/node-config/wiki/Upgrading-From-Config-0.x)
* [Webpack usage](https://github.com/node-config/node-config/wiki/Webpack-Usage)Further Information
---------------------
If you still don't see what you are looking for, here are some more resources to check:* The [wiki may have more pages](https://github.com/node-config/node-config/wiki) which are not directly linked from here.
* Review [questions tagged with node-config](https://stackexchange.com/filters/207096/node-config) on StackExchange. These are monitored by `node-config` contributors.
* [Search the issue tracker](https://github.com/node-config/node-config/issues). Hundreds of issues have already been discussed and resolved there.Contributors
------------
lorenwest
markstos
iMoses
elliotttf
jfelege
leachiM2k
josx
enyo
leosuncin
arthanzel
eheikes
th507
Osterjour
cunneen
nsabovic
BadgerBadgerBadgerBadger
simon-scherzinger
leonardovillela
axelhzf
benkroeger
fgheorghe
IvanVergiliev
jpwilliams
jaylynch
jberrisch
kgoerlitz
bertho-zero
NguyenMatthieu
nitzan-shaked
robertrossmannLicense
-------May be freely distributed under the [MIT license](https://raw.githubusercontent.com/node-config/node-config/master/LICENSE).
Copyright (c) 2010-2022 Loren West
[and other contributors](https://github.com/node-config/node-config/graphs/contributors)