如何在命令行上将分层configuration值传递给nconf?

冒号分隔nconf层次结构,例如,

{ "AUTH": { "ENABLED": true } } 

通过访问

 nconf.get("AUTH:ENABLED"); 

我想通过在npm start下的环境和/或命令行选项覆盖这个,例如,

 AUTH:ENABLED=false npm start 

由于冒号,这在bash和zsh下都失败了。 用\逃避冒号并没有帮助。

以下情况在所有情况下都不合格(等级与否):

 npm start --AUTH:ENABLED=false 

我怎么能通过一个有效的方式通过nconf / optimist分层configuration值?

最简单的事情是configurationnconf使用不太可怕的分隔符字符作为每个文档:

 // // Or use both options // nconf.env({ separator: '__', whitelist: ['database__host', 'only', 'load', 'these', 'values'] }); var dbHost = nconf.get('database:host'); 

我的另一个build议是考虑一个不太古怪的configuration模块。 有npm几十个。 看看nconf github的问题,我看到足够的警告标志,这个模块太多太多的select。 configuration应该很简单。 如果不是的话,走开。 我的猜测是,如果你正在构build一个像nodejitsu这样的PaaS的话,这可能是合适的,大多数应用程序不需要一个有十几个不同位置的无限深层的configuration层次来检查数据。