7

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

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

通过以下方式访问:

nconf.get("AUTH:ENABLED");

我想通过环境和/或命令行选项覆盖它npm start,例如,

AUTH:ENABLED=false npm start

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

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

npm start --AUTH:ENABLED=false

如何以有效的方式将分层配置值传递给 nconf/optimist?

4

1 回答 1

10

最简单的事情是根据文档配置 nconf 以使用不太可怕的分隔符:

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

我的另一个建议是考虑一个不那么奇怪的配置模块。npm上有几十个。通过查看nconf github 问题,我看到了足够多的警告信号,表明该模块使用太多选项做了太多事情。配置应该简单明了。如果不是,请走开。我的猜测是,如果您正在构建诸如 nodejitsu 之类的 PaaS,这可能是合适的,但大多数应用程序不需要具有十几个不同位置的无限深配置层次结构来检查数据。

于 2014-07-29T14:31:25.010 回答