【配置】dotenv+config
dotenv
-
安装
npm i -S dotenv- 最新版本10.0.0
-
根目录下新建
.env文件,里面写敏感配置- 必须要加入到
.gitignore里面,防止泄漏 - 可以只留下
键=,存一个.env.example,- 上传到git版本控制中便于其他开发者填写后在本地跑项目
- 必须要加入到
-
.env文件写法NODE_ENV=production DB_HOST=localhost -
【重要】尽早初始化的写法(位于
lib/utils/config.js)import * as dotenv from "dotenv"; dotenv.config();- 然后在index.js入口文件中,第一行就 import 这个 config.js
- 通过单独文件执行这两行代码,保证都被引入,否则后面
import config from "config";会出问题!!!
config
-
安装
npm i -S config- 最新版本3.3.6
-
根目录下要新建
config文件夹,放置非敏感配置文件mkdir config-
在里面新建
default.json- 放置
多个环境共用的默认配置{ "default": true }
- 放置
-
在里面新建
development.json- 放置
开发环境专用配置(如果有相同字段冲突,就会覆盖默认的)
{ "dbConfig":{ "host": "development" }, "dev": true }- 如何开启?
- 使用
NODE_ENV=development- 要么命令行启动时直接写上
- 要么写入
.env文件中
- 使用
- 放置
-
在里面新建
production.json- 放置
生产环境专用配置(如果有相同字段冲突,就会覆盖默认的){ "prod": true } - 如何开启?
- 使用
NODE_ENV=production- 要么命令行启动时直接写上
- 要么写入
.env文件中
- 使用
- 放置
-
在里面新建
custom-environment-variables.json{ "dbConfig":{ "host": "DB_HOST" } }- 这里的
DB_HOST- 需要结合
dotenv和.env使用,看后面
- 需要结合
- 这里的
-
-
在路由中使用
import config from "config";- 获取父字段下,子字段对应的对象
let dbConfig = config.get('父字段.子字段') - 如果无法保证这个对象一定存在,可能会报错,所以需要先检测
if(config.has('父字段.子字段')){ let dbConfig = config.get('父字段.子字段') }
- 获取父字段下,子字段对应的对象
总结方案
-
不重要的配置
- 一律放到
default.json中
- 一律放到
-
开发时专用的配置
- 放到
development.json中
- 放到
-
生产时用到的配置
- 放到
production.json中
- 放到
-
敏感配置,比如密码
- 一律放到.env文件
- 借助
custom-environment-variables.json文件,加载到config中统一使用