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?
已存档?
是复刻?
已锁定?
是镜像?
是私有?