【问题标题】:node-config multiple configuration filesnode-config 多个配置文件
【发布时间】:2018-03-09 10:04:53
【问题描述】:

我正在查看这个https://github.com/lorenwest/node-config,它似乎可以满足我的所有需求。但是我想知道是否可以根据它们的类别指定多个配置文件。

这样可以吗?

./config
   default-aws.json or aws-default.json
   production-aws.json or aws-production.json
   db-default.json
   db-production.json 

等等。

所以配置文件可以更小?我知道我们可以制作一个巨大的配置,其中包含不同部分所需的所有内容。例如

{
   "aws": {
      "kinesis": "my-stream"
       ....
    },
    "db": {
       "host": "my-host"
        ...
    }
}

如果使用 node-config 或与 node-config 类似的其他库可以做到这一点,有人有什么想法吗?

感谢和问候 锡

【问题讨论】:

    标签: node.js node-config


    【解决方案1】:

    我是node-config 的维护者。下一个版本将支持声明多个NODE_ENV 值的功能,以逗号分隔。

    因此,如果您在云中进行开发,您可以声明一个“开发”环境,然后是一个“云”环境。

    首先会加载开发配置,然后是“云”配置。

    相关的拉取请求是#486

    【讨论】:

      【解决方案2】:

      我使用nconf。它允许您将多个配置文件读入同一个对象。这是一个例子:

      var nconf = require('nconf');
      
      //read the config files; first parameter is a required key
      nconf.file('aws', {file: 'default-aws.json'});
      nconf.file('db', {file: 'db-default.json'});
      
      console.log(nconf.get('aws:kinesis'));
      console.log(nconf.get('db:host'));
      

      默认-aws.json:

      {
        "aws": {
          "kinesis": "my-stream"
        }
      }
      

      db-default.json:

      {
        "db": {
          "host": "my-host"
        }
      }
      

      【讨论】:

      • 谢谢。您如何在 nconf 中将整个合并配置(默认/产品)作为 json 获取?我知道我们可以做 JSON.stringify(nconf.get("aws:kinesis")),但是不知道根节点是什么的根节点呢?以及在这种情况下如何用环境变量覆盖“aws:kinesis”的值?
      • 也许你可以单独读取和处理每个文件:nconf.file({file: cFile1}); console.log(nconf.get('aws:kinesis')); console.log(nconf.get('key')); nconf.file({file: cFile2}); console.log(nconf.get('db:host')); console.log(nconf.get('key'));我知道这基本上就像使用一个 nconf 对象,所以它可能不是你想要的。
      【解决方案3】:

      简短的回答是否定的。 node-config 不支持这个(作为@Mark 的回应)。

      使用 node-config 最简单的方法是使用 JavaScript 作为配置文件 (https://github.com/lorenwest/node-config/wiki/Configuration-Files#javascript-module---js)。这样,您仍然可以获得使用 node-config 的大部分好处。然后你可以简单地在其中包含其他文件 (https://github.com/lorenwest/node-config/wiki/Special-features-for-JavaScript-configuration-files#including-other-files)

      请注意,使用多个配置文件和覆盖内部文件会有点困难。

      稍微复杂一点的实现可以使用 config 中的实用程序类,它实际上允许您使用与 node-config 内部使用的相同模式 (https://github.com/lorenwest/node-config/wiki/Using-Config-Utilities#loadfileconfigsdirectory) 直接读取特定文件夹。 在这种情况下,您可能希望通过在第一次调用 get (https://github.com/lorenwest/node-config/wiki/Configuring-from-an-External-Source) 之前在配置对象上设置它们来将所有文件组合到一个配置中。

      【讨论】:

        猜你喜欢
        • 2018-07-23
        • 2019-06-08
        • 2017-10-12
        • 2014-08-25
        • 2018-10-10
        • 1970-01-01
        • 1970-01-01
        • 2021-05-12
        • 1970-01-01
        相关资源
        最近更新 更多