node.js - 如何在命令行上将分层配置值传递给 nconf?

标签 node.js express zsh 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?

最佳答案

最简单的事情是根据文档配置 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,这可能是合适的,但大多数应用程序不需要无限深的配置层次结构和十几个不同的地方来检查数据。

关于node.js - 如何在命令行上将分层配置值传递给 nconf?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25017495/

相关文章:

node.js - Alexa 在播放时不接受音频命令

node.js - 风 sails js : Multiple Layouts

javascript - 检索推文并将其显示在网络上

node.js - 使用 webrtc + node.js 进行视频 session

javascript - TypeError : Cannot read property 'get' of undefined. 是 npm 的问题吗?

node.js - 我是否必须使用 ngrok 来公开 MERN 堆栈的前端和后端才能使 CRUD 操作正常工作?

macos - 一些目录的绿色背景 [Oh My Zsh, Zsh]

alias - 在 zsh 或 bash 中打印执行的别名

javascript - Webpack 热重载 + React JS 和 Babel

shell - 如何知道 mac 命令行上 open 命令的 -a 标志可使用哪些应用程序