写在前面:
最近开始开始学习 nodejs,将通过翻译 NPM 中的模块的方式来加强自己的学习,如有翻译不到位的地方,请大家多多指教。
该模块 Git 地址:https://github.com/lorenwest/node-config
config – 配置你的Node.js 应用程序
简介(Introduction)
Node-config 管理你应用程序部署的层次结构(hierarchical configurations)。
它允许你定义一组默认参数,并可以根据不同的部署环境来进行扩展(开发,qa质量评价,staging,产品等等)。
所有配置项存储在应用程序的配置文件中,配置项可以被重写,也可以通过environment variables, command line parameters, 或者 external sources来进行扩展。
这给了你的应用程序一个一致的配置接口,通过使用 node-config 来共享逐渐增长的npm 模块列表。
项目指南(Project Guidelines)
- 简单 – 入门快
- 强大 – multi-node 企业级部署
- 灵活 – 支持多种不同格式的配置文件
- 轻量级 – 极少的文件和内存占用
- 可预言性 – 对开发者来说,很好的模块和程序测试基础
快速入门(Quick Start)
下面这个示例使用 JSON 格式,你也可以使用其他文件格式进行配置。
在程序目录下进行安装,并编辑默认配置文件。
$ npm install config
$ mkdir config
$ vi config/default.json
{
// Customer module configs
"Customer": {
"dbConfig": {
"host": "localhost",
"port": 5984,
"dbName": "customers"
},
"credit": {
"initialLimit": 100,
// Set low for development
"initialDays": 1
}
}
}
重写配置文件进行产品部署:
$ vi config/production.json
{
"Customer": {
"dbConfig": {
"host": "prod-db-server"
},
"credit": {
"initialDays": 30
}
}
}
使用配置:
var config = require('config');
//...
var dbConfig = config.get('Customer.dbConfig');
db.connect(dbConfig, ...);
if (config.has('optionalFeature.detail')) {
var detail = config.get('optionalFeature.detail');
//...
}
键未定义时,config.get()
会抛出异常,以帮助捕获拼写错误和缺失值的错误。当配置值已定义时,使用 config.has()
进行测试。
开启服务:
$ export NODE_ENV=production
$ node my-app.js
运行这个配置,dbConfig
的 port
和 dbName
元素将来自于 default.json
文件,而 host
元素将会来自于重写的 production.json
文件。