12 要素配置
一个只读取环境的配置模块 。 对于节点J,这意味着 process.env。 。 。 .
注1:我们永远不会使用 NODE_ENV 在任何例子中,因为每个环境
应具体说明它需要的一切,任何事物都不应取决于它是否属于一个特定群体
环境(例如“开发”、“测试”、“储存”或“生产”).
说明2:这个包件被认为稳定,因此很少有人承担这些责任 日子不是无所作为的迹象,只是稳定。 请为错误使用并提交 PR 。 新设 还将考虑特征.
稳定
请注意,该项目已经完成。 问题将得到解决。 新设 必要时可添加特性。 否则它不会有更多的释放 - 但是 请放心,我将支持它和你。 这个项目没有死,只是休息而已.
概要
首先设定一些您程序会寻找的环境变量 。 你用不着 设置任何有“ 默认” 的设置, 但您需要设置任何“ 需要” .
$ export REDIS_URL=redis://user:password@hostname:port/db
$ export APPNAME_PORT=8080
然后,在你的节目中:
var config = require('12factor-config');
var cfg = config({
redisUrl : {
env : 'REDIS_URL',
type : 'string', // default
required : true,
},
logfile : {
env : 'APPNAME_LOG_FILE',
type : 'string',
default : '/var/log/appname.log',
required : true,
},
port : {
env : 'APPNAME_PORT',
type : 'integer',
default : '8000',
required : true,
},
debug : {
env : 'APPNAME_DEBUG',
type : 'boolean',
default : false,
},
env : {
// you really shouldn't use this, but some people/packages do
env : 'NODE_ENV',
type : 'enum',
values : [ 'development', 'test', 'stage', 'production', ],
},
});
console.log(cfg);
输出诸如:
{
redisUrl: 'redis://user:password@hostname:port/db',
logfile: '/var/log/appname.log',
port: 8080,
debug: false,
env: 'development'
}
最好在环境变量前加上与应用程序相关的前缀 名称如上面后面的配置 vars 所示。 这主要是为了给您命名 而不是踩踏 而不是已经定义的其他人。 当然你不需要在本地名中使用前缀.
有效值
当您有某些类型时,会进行一些转换,从字符串中获取(因为 环境只包含字符串),输入所需的值.
boolean- 允许大案或小案- -"真","不","是","y","on","1"
- 假-"假","f","no","n","off","0"
- 任何其它值抛出
我做什麽
我通常有一个 lib/cfg.js 例如:
var config = require('12factor-config');
var cfg = config({
// ... environment config here ...
});
module.exports = cfg;
通过这样做,应用程序中的所有其他文件都可以只是 require('lib/cfg.js') 并获取
同样的配置.
作者
许可证
麻省理工学院 http://chilts.mit-license.org/2013/ (中文(简体) )
(结束)