dotenv 是遵循12 factor 的一個環境變量管理npm 包,node-config 是一個強大的配置管理npm 包,我們集成起來
可以進行方便的配置管理,以下是一個簡單使用說明
環境准備
- node 環境
yarn init -y
yarn add dotenv config
- npm script
{
"dependencies": {
"config": "^3.3.1",
"dotenv": "^8.2.0"
},
"scripts": {
"app":"node app.js"
}
}
- 項目結構
├── app.js
├── .env
├── config
│ ├── custom-environment-variables.json
│ ├── default.json
│ └── stage.json
├── package.json
└── yarn.lock
- 簡單說明
default.json 為默認的配置,stage.json 為stage 的配置,custom-environment-variables.json為環境變量替換的模版
.env 為基於dotenv 管理的一個env 配置,按照node-config 的約定,環境變量包含了NODE_ENV=stage 會走stage 的配置
同時如果.env 包含了內容會自動替換,沒有的為空,同時custom-environment-variables.json 的對象會有激活的配置合並
(當然對於重復的,custom-environment-variables會覆蓋)
default.json
{
"apps":{
"users":{
"name":"dalong",
"age":333
}
}
}
stage.json
{
"apps":{
"users":{
"name":"stage",
"age":333
}
}
}
custom-environment-variables.json
{
"username": "USERNAME",
"userpassword":"USERPASSWORD"
}
.env
USERNAME=dalong
USERPASSWORD=dalong
NODE_ENV=stage
- app.js 代碼
require("dotenv").config()
const config = require("config")
console.log(config)
console.log('NODE_APP_INSTANCE: ' + config.util.getEnv('NODE_ENV'));
運行&&效果
- 運行
yarn app
- 效果
說明
集成node-config 以及dotenv 我們可以實現靈活的系統配置管理,同時方便配置的引用,還是比較方便的
參考資料
https://github.com/lorenwest/node-config/wiki/Configuration-Files
https://www.npmjs.com/package/dotenv
https://github.com/rongfengliang/dotenv_node-config-learning