node-no-config

Config and resource loader

Github星跟蹤圖

NPM version
Build Status
Test Coverage
Dependency Status
Dependency Status
Intro, Quick start, Quick start (ES6), API, Contributors

Intro

Why not config?

Answer. TL;DR: config separates data to different files based on NODE_ENV, not resources.

$ npm install no-config

Quick start

// config.js
module.exports = {
	redis: {
		init: function (params) {
			return require('redis').createClient(params)
		},
		default: {
			db: 0,
			port: 6379
		},
		development: {
			host: '127.0.0.1'
		},
		production: {
			db: 1,
			host: '192.168.0.10'
		}
	}
}
// index.js
require('no-config')({
	config: require('./config')
}).then(
	function(conf) {
		console.log('ENV', conf.env)
		console.log('Redis:', conf.redis.host+':'+conf.redis.port)
		conf.redis.instance.set('hello', 'world')
	}
)
$ NODE_ENV=development node index.js
ENV development
Redis: 127.0.0.1:6379

Quick start (ES6)

Since no-config returns a promise it is much better to use ES6 generators, arrow functions and co.
If you are not familiar with co, check this step-by-step tutorial

// config.js
module.exports = {
	redis: {
		init: params => require('redis').createClient(params),
		default: {
			db: 0,
			port: 6379
		},
		development: {
			host: '127.0.0.1'
		},
		production: {
			db: 1,
			host: '192.168.0.10'
		}
	}
}
// index.js
'use strict'
const co = require('co')
co(function* () {
	let config = require('./config')
	let conf = yield require('no-config')({config})

	console.log('ENV', conf.env)
	console.log('Redis:', conf.redis.host+':'+conf.redis.port)
	conf.redis.instance.set('hello', 'world')
})

API

Loader

require('no-config')(parameters)

Loads resources from parameters.config based on NODE_ENV environment variable. Returns a Promise which resolves ones all resources are initialized.

Parameters, Name, Required?, Type, Default, Description, --------------, ---------, ---------------, -------------, --------------------------------------------------------, config, Required, Object, Configuration object, init, Optional, List of strings, All Resources, Resources to initialize, verbose, Optional, Boolean, false, Print resource input prior to call its init() function, mask_secrets, Optional, Boolean, true, if verbose === true will hide input value if its key contains substrings: secret, token, key, pass or pwd, ### Configuration object
Every high-level key in configuration object is a resource name., Name, Required?, Type, Default, Description. Handling, -------------------, ---------, ----------, ------------------, ---------------------------------------------------, <RESOURCE>, Optional, Object, Resource configuration, <RESOURCE>.default, Optional, Object, {}, Default values, <RESOURCE>.<ENV>, Optional, Object, {}, ENV specific values. If a key duplicates default key, env-specific value is used, <RESOURCE>.init, Optional, Function, Generator function, Called to initalize resource, <RESOURCE>.init(result). If returns Promise or Generator, it got resolved with co. Result is saved to result.instance., ## Contributors
Fedor Korshunov - view contributions
Anurag Sharma - view contributions

主要指標

概覽
名稱與所有者fedor/node-no-config
主編程語言JavaScript
編程語言JavaScript (語言數: 1)
平台
許可證MIT License
所有者活动
創建於2016-09-12 16:20:33
推送於2018-02-27 01:59:55
最后一次提交2018-02-27 09:59:54
發布數0
用户参与
星數47
關注者數1
派生數5
提交數40
已啟用問題?
問題數2
打開的問題數0
拉請求數2
打開的拉請求數0
關閉的拉請求數0
项目设置
已啟用Wiki?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?