config 包
config 是 Node.js 最经典多环境配置管理包专门用来分环境存放项目配置,支持自定义文件路径和环境切换。
常见格式
node-config 支持多种配置文件格式:
.json(默认支持,最通用).json5(需要安装json5包).yaml,.yml(易读,需要安装js-yaml包).js,.cjs(动态配置,支持 JavaScript 逻辑).toml(需要安装toml包)
注意
.ini,.conf格式需要安装ini包并配置自定义解析器.env文件不是 node-config 的配置格式,通常由dotenv或dotenv-flow包处理- node-config 通过环境变量覆盖配置,但不直接读取
.env文件
安装
bash
npm install config --save-dev1
目录结构(固定)
plaintext
your-project/
├── config/
│ ├── default.json # 默认配置(必须)
│ ├── development.json
│ └── production.json
└── app.js1
2
3
4
5
6
2
3
4
5
6
配置
json
{
"db": {
"host": "localhost",
"port": 27017,
"name": "mydb"
},
"app": {
"port": 3000,
"debug": true
}
}1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
json
{
"db": {
"host": "10.0.0.5"
},
"app": {
"port": 8080,
"debug": false
}
}1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
javascript
const config = require('config');
// 读配置(支持点语法)
console.log(config.get('db.host')); // 生产环境:10.0.0.5
console.log(config.get('app.port')); // 8080
console.log(config.get('app.debug')); // false
// 也可以直接当对象用
console.log(config.db.name); // mydb1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
核心规则
- 默认优先,环境覆盖:
default.json是基础,环境文件(如production.json)只写需要改的项,自动合并。 - 支持多种格式:
.json/.yaml/.js都可以,default.yaml会被自动识别。 - 环境变量可覆盖:命令行或系统环境变量优先级最高,适合敏感信息(如密码)。
自定义文件路径
你可以通过多种方式自定义配置文件的路径,满足不同的项目结构需求。
1. 自定义配置文件
默认配置文件为 ./config/default.json,你可以通过 path 选项指定自定义文件:
javascript
const config = require('config', {
path: './config/myconfig.json'
});1
2
3
2
3
2. 自定义配置目录
如果你想指定整个配置目录而非单个文件:
javascript
const config = require('config', {
dir: './config/production'
});1
2
3
2
3
3. 多个配置目录
支持同时指定多个配置目录,按顺序查找并合并:
javascript
const config = require('config', {
dirs: [
'./config/base',
'./config/env/production',
'./config/local'
]
});1
2
3
4
5
6
7
2
3
4
5
6
7
4. 使用环境变量
在启动应用时通过环境变量指定配置目录:
bash
NODE_CONFIG_DIR=./config/custom node app.js1
5. 命令行参数
通过命令行参数传递配置路径:
bash
node app.js --config=./config/myconfig.json1
注意事项
- 路径解析:配置路径相对于当前工作目录(
process.cwd()) - 优先级:自定义路径 > 环境变量 > 默认路径
- 文件格式:支持
.json、.yaml、.yml、.js等格式 - 目录结构:指定目录时,需确保目录下存在
default.{ext}文件作为基础配置

