Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ryanj/config-multipaas
A config-chain wrapper that checks common cloud configs, providing autoconfiguration for several cloud hosting environments
https://github.com/ryanj/config-multipaas
Last synced: 18 days ago
JSON representation
A config-chain wrapper that checks common cloud configs, providing autoconfiguration for several cloud hosting environments
- Host: GitHub
- URL: https://github.com/ryanj/config-multipaas
- Owner: ryanj
- License: mit
- Created: 2014-10-06T03:43:41.000Z (about 10 years ago)
- Default Branch: master
- Last Pushed: 2018-08-23T23:29:55.000Z (about 6 years ago)
- Last Synced: 2024-10-11T00:11:57.081Z (about 1 month ago)
- Language: JavaScript
- Homepage: https://www.npmjs.org/package/config-multipaas
- Size: 19.5 KB
- Stars: 5
- Watchers: 3
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
#config-multipaas [![npm version](http://img.shields.io/npm/v/config-multipaas.svg)](https://www.npmjs.org/package/config-multipaas) [![Build Status](http://img.shields.io/travis/ryanj/config-multipaas.svg)](https://travis-ci.org/ryanj/config-multipaas)
[CONFIG-CHAIN](https://github.com/dominictarr/config-chain) W/ [CLOUD-ENV](https://github.com/ryanj/cloud-env/) DEFAULTS!
**!!AUTOCONFIGURE JS CODE FOR USE ON ANY PLATFORM NODE!!**
![MultiPaaS](http://i.imgur.com/fCi6YX6.png)
[Config-multiPaaS](https://github.com/ryanj/config-multipaas) is a [`config-chain`](https://github.com/dominictarr/config-chain) wrapper that includes autoconfiguration support for all major cloud hosting platforms and deployment targets:
* [OpenShift](https://developers.openshift.com/languages/nodejs/environment-variables.html#listen)
* [Heroku](https://devcenter.heroku.com/articles/dynos#web-dynos)
* [Modulus](http://help.modulus.io/customer/portal/articles/1660583)
* [CloudFoundry](http://docs.cloudfoundry.org/devguide/deploy-apps/environment-variable.html#PORT)It works by [checking the system environment for known configuration strings](https://github.com/ryanj/cloud-env/), normalizing the results into a [consistent list](#configuration-strings).
[![npm stats](https://nodei.co/npm/config-multipaas.png?downloads=true&stars=true)](https://www.npmjs.org/package/config-multipaas)
[![Dependency Check](http://img.shields.io/david/ryanj/config-multipaas.svg)](https://david-dm.org/ryanj/config-multipaas) [![monthly downloads](http://img.shields.io/npm/dm/config-multipaas.svg)](https://www.npmjs.org/package/config-multipaas) [![license](http://img.shields.io/npm/l/config-multipaas.svg)](https://www.npmjs.org/package/config-multipaas)
## Setup
Configuration objects generated by `config-multipaas` are valid instances of [`config-chain`](https://www.npmjs.org/package/config-chain), making it easy to extend, or to use as drop-in replacement:
``` js
//npm install --save config-multipaas
var cc = require('config-multipaas')// Merge multiple layers of configuration down into a single set:
var config_overrides = { foo: "bar" } // override values should be provided first
var config = cc(config_overrides) // cloud configs will be automatically resolved
.add({ PORT: 8000 }) // low-priority defaults should be appended last
```The above example will produce a default `PORT` value of `8000` when autoconfiguration strings are unavailable - as in local development environments. On all platforms, `foo` will be resolved as `"bar"`.
See the [`config-chain README`](https://github.com/dominictarr/config-chain#boring-api-docs) for advanced usage notes, and the below list of [configuration strings](#configuration-strings) for more information about cloud-provided configs.
## Listen up
Make sure to pass `config.get('PORT')` and `config.get('IP')` to your app's `listen` function:```js
app.listen(config.get('PORT'), config.get('IP'), function () {
console.log("Listening on "+config.get('IP')+", port "+config.get('PORT'))
});
```If host-provided configs are not found, local development defaults are returned - allowing you to configure once, and run anywhere.
## Configuration Strings
Consistent, vendor-neutral, server configuration strings [provoded by `cloud-env`](https://github.com/ryanj/cloud-env#configuration-strings):config.get(KEYNAME) | DEFAULT | process.env.SOURCE_VARS
--------------------|-----------|---------------
IP | 0.0.0.0 | OPENSHIFT_NODEJS_IP, BIND_IP
PORT | 8080 | OPENSHIFT_NODEJS_PORT, PORT
HOSTNAME | localhost | OPENSHIFT_APP_DNS, HOSTNAME
APP_NAME | APP_NAME | OPENSHIFT_APP_NAME, APP_NAME
MONGODB_DB_URL | mongodb://127.0.0.1:27017 | OPENSHIFT_MONGODB_DB_URL, MONGODB_DB_URL
POSTGRESQL_DB_URL | postgresql://127.0.0.1:5432 | OPENSHIFT_POSTGRESQL_DB_URL, POSTGRESQL_DB_URL
MYSQL_DB_URL | mysql://127.0.0.1:3306 | OPENSHIFT_MYSQL_DB_URL, MYSQL_DB_URL