Node.js 如何在命令行上将层次结构配置值传递给nconf?

Node.js 如何在命令行上将层次结构配置值传递给nconf?,node.js,express,zsh,nconf,Node.js,Express,Zsh,Nconf,冒号分隔层次结构,例如 { "AUTH": { "ENABLED": true } } 可通过以下方式访问: nconf.get("AUTH:ENABLED"); 我想通过npm start下的环境和/或命令行选项覆盖此选项,例如 AUTH:ENABLED=false npm start 由于冒号的原因,在bash和zsh下都会失败。用\转义冒号没有帮助 在所有情况下(分层或非分层),以下操作也会失败: 如何以有效的方式将层次结构配置值传递给NCOF/optimist?最简

冒号分隔层次结构,例如

{
  "AUTH": {
    "ENABLED": true
  }
}
可通过以下方式访问:

nconf.get("AUTH:ENABLED");
我想通过
npm start
下的环境和/或命令行选项覆盖此选项,例如

AUTH:ENABLED=false npm start
由于冒号的原因,在bash和zsh下都会失败。用
\
转义冒号没有帮助

在所有情况下(分层或非分层),以下操作也会失败:


如何以有效的方式将层次结构配置值传递给NCOF/optimist?

最简单的方法是根据文档将NCOF配置为使用不太糟糕的分隔符:

//
// Or use both options
//
nconf.env({
  separator: '__',
  whitelist: ['database__host', 'only', 'load', 'these', 'values']
});
var dbHost = nconf.get('database:host');
我的另一个建议是考虑一个不那么怪异的配置模块。npm上有几十个。通过查看,我看到了足够多的警告标志,表明此模块使用了太多的选项。配置应该简单明了。如果不是,就走开。我的猜测是,如果您正在构建一个PaaS,比如nodejitsu,这可能是合适的,但大多数应用程序不需要一个有十几个不同位置的无限深的配置层次结构来检查数据。

Ouch我在
env
部分的drat中没有看到这一点。如果它也适用于命令行参数,那就太好了。我们可以考虑跳船到别的地方,但现在还没有。
//
// Or use both options
//
nconf.env({
  separator: '__',
  whitelist: ['database__host', 'only', 'load', 'these', 'values']
});
var dbHost = nconf.get('database:host');