node-config多个配置文件

时间:2018-03-09 10:04:54

标签: node.js node-config

我正在看这个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的不同库,那么任何人都有任何想法吗?

谢谢&问候 锡

3 个答案:

答案 0 :(得分:2)

简短的回答是否定的。 node-config不支持此功能(As @ 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)之前在config对象上设置所有文件到单个配置。

答案 1 :(得分:1)

我使用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"
  }
}

答案 2 :(得分:1)

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

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

首先加载开发配置,然后加载“cloud”配置。

相关的提款请求为#486