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.yaml
、default.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
包检索配置数据。
{ "app": { "port": 3000 }, "db": { "host": "localhost", "port": 27017, "name": "ydb" } }
我们在 config
目录中有 default.json
。
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,并设置生产部署环境。
app: port: 3000 db: host: localhost port: 27017 name: ydb
这是 default.yaml
文件。
app: port: 3300 db: host: localhost port: 27017 name: mydb
这是 production.yaml
文件。
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
包为我们的 Node.js 应用程序创建配置文件。