冒号分隔nconf层次结构,例如,
{
"AUTH": {
"ENABLED": true
}
}
可通过以下方式访问:
nconf.get("AUTH:ENABLED");
我想通过npm start
下的环境和/或命令行选项来覆盖它,例如,
AUTH:ENABLED=false npm start
由于冒号,这在bash和zsh下都失败了。使用\
转义冒号无济于事。
以下情况也会在所有情况下(分层或不分层)失败:
npm start --AUTH:ENABLED=false
如何以有效的方式将分层配置值传递给nconf / optimist?
答案 0 :(得分:7)
最简单的方法是根据文档配置nconf以使用不太可怕的分隔符:
//
// Or use both options
//
nconf.env({
separator: '__',
whitelist: ['database__host', 'only', 'load', 'these', 'values']
});
var dbHost = nconf.get('database:host');
我的另一个建议是考虑一个不太奇怪的配置模块。 npm上有几十个。透过nconf github issues,我看到足够的警告信号表明这个模块只是做了太多选项。配置应该很简单。如果不是,走开。我的猜测是,如果你正在构建一个像nodejitsu这样的PaaS,这可能是合适的,大多数应用程序不需要一个无限深的配置层次结构,有十几个不同的位置来检查数据。