模块地址:https://www.npmjs.com/package/config。
简介
读取json配置。
示例
$ mkdir nodejs-code
$ cd nodejs-code
$ npm install config
$ mkdir config
$ touch config/default.json
$ touch config/development.json
$ touch config/production.json
$ touch my-app.js
config/default.json
{
"Customer": {
"dbConfig": {
"host": "localhost",
"port": 5984,
"dbName": "customers"
},
"credit": {
"initialLimit": 100,
"initialDays": 1
}
}
}
config/development.json
{
"Customer": {
"dbConfig": {
"host": "dev-db-server"
},
"credit": {
"initialDays": 20
}
}
}
config/production.json
{
"Customer": {
"dbConfig": {
"host": "prod-db-server"
},
"credit": {
"initialDays": 30
}
}
}
my-app.js
var config = require('config');
var dbConfig = config.get('Customer.dbConfig');
console.log('Customer.dbConfig: ' + dbConfig.toString());
console.log('dbName: ' + dbConfig.get('dbName'));
if (dbConfig.has('host')) {
var host = dbConfig.get('host');
console.log('host: ' + host);
}
运行示例
$ export NODE_ENV=
$ node my-app.js
Customer.dbConfig: [object Object]
dbName: customers
host: dev-db-server
$ export NODE_ENV=development
$ node my-app.js
Customer.dbConfig: [object Object]
dbName: customers
host: dev-db-server
$ export NODE_ENV=production
$ node my-app.js
Customer.dbConfig: [object Object]
dbName: customers
host: prod-db-server
$ NODE_ENV=production node my-app.js
Customer.dbConfig: [object Object]
dbName: customers
host: prod-db-server
$ NODE_ENV=product node my-app.js
WARNING: NODE_ENV value of 'product' did not match any deployment config file names.
WARNING: See https://github.com/lorenwest/node-config/wiki/Strict-Mode
Customer.dbConfig: [object Object]
dbName: customers
host: localhost
$ mv config/development.json config/development.json.bak
$ export NODE_ENV=
$ node my-app.js
Customer.dbConfig: [object Object]
dbName: customers
host: localhost
可以看出,如果NODE_ENV为空,使用development.json,如果没有development.json,则使用default.json。 若NODE_ENV不为空,则到config目录中找响应的文件,若文件没找到则使用default.json中的内容。 若在指定的文件中没找到配置项,则去default.json找。
其他
也可以自己写个简单的读取配置的小工具,例如Managing config variables inside a Node.js application。