ZetCode

Node-config 教程

最后修改于 2023 年 10 月 18 日

在本文中,我们将展示如何使用 node-config 模块为 Node 应用程序创建配置文件。

Node-config

Node-config 为应用程序部署创建配置文件。

Node-config 允许我们定义一组默认参数,并为不同的部署环境(开发、qa、staging、生产等)扩展它们。

配置文件位于默认的 config 目录中。可以使用 NODE_CONFIG_DIR 环境变量覆盖该位置。NODE_ENV 环境变量包含我们应用程序的部署环境的名称;它默认为 development

Node-config 支持各种配置文件格式,包括 JSON、YAML、属性或 XML。默认配置文件是 default.json(或 default.yamldefault.xml)。如果使用生产部署,则从 production.json 加载配置。

设置 Node-config

首先,我们安装 node-config

$ npm init -y

我们启动一个新的 Node 应用程序。

$ npm i config

我们使用 npm i config 安装 node-config。

$ npm i js-yaml

此外,我们安装 js-yaml 以支持 YAML。

Node-config 示例

以下示例使用 config 包检索配置数据。

config/default.json
{
    "app": {
        "port": 3000
    },
    "db": {
        "host": "localhost",
        "port": 27017,
        "name": "ydb"
    }
}

我们在 config 目录中有 default.json

simple.js
const config = require('config');

let appPort = config.get('app.port');
console.log(`Application port: ${appPort}`);

let dbHost = config.get('db.host');
console.log(`Database host: ${dbHost}`);

let dbPort = config.get('db.port');
console.log(`Database port: ${dbPort}`);

let dbName = config.get('db.name');
console.log(`Database name: ${dbName}`);

console.log('NODE_ENV: ' + config.util.getEnv('NODE_ENV'));

我们加载 config 包,并使用 config.get 函数获取值。默认部署类型在 NODE_ENV 中指定。

$ node simple.js
Application port: 3000
Database host: localhost
Database port: 27017
Database name: ydb
NODE_ENV: development

Node-config 示例 II

我们将配置文件更改为 YAML,并设置生产部署环境。

config/default.yaml
app:
  port: 3000

db: 
  host: localhost
  port: 27017
  name: ydb

这是 default.yaml 文件。

config/production.yaml
app:
  port: 3300

db: 
  host: localhost
  port: 27017
  name: mydb

这是 production.yaml 文件。

simple.js
const config = require('config');

let appPort = config.get('app.port');
console.log(`Application port: ${appPort}`);

let dbHost = config.get('db.host');
console.log(`Database host: ${dbHost}`);

let dbPort = config.get('db.port');
console.log(`Database port: ${dbPort}`);

let dbName = config.get('db.name');
console.log(`Database name: ${dbName}`);

console.log('NODE_ENV: ' + config.util.getEnv('NODE_ENV'));

simple.js 文件是相同的。

$ node simple.js
Application port: 3000
Database host: localhost
Database port: 27017
Database name: ydb
NODE_ENV: development

这是默认环境的输出。配置从 default.yaml 加载。

$ set NODE_ENV=production
$ node simple.js
Application port: 3300
Database host: localhost
Database port: 27017
Database name: mydb
NODE_ENV: production

我们使用 set 命令更改 NODE_ENV 变量。(在 Linux 上使用 export。)现在配置数据从 production.yaml 文件加载。

来源

node-config Github 页面

在本文中,我们使用 node-config 包为我们的 Node.js 应用程序创建配置文件。

作者

我叫 Jan Bodnar,是一位热情的程序员,拥有丰富的编程经验。自 2007 年以来,我一直在撰写编程文章。迄今为止,我撰写了 1,400 多篇文章和 8 本电子书。我拥有超过十年的编程教学经验。

查看 所有 JavaScript 教程。