Expressjs
本身缺乏根据不同的环境来加载对应的配置文件的机制,这会导致很多配置都写在同一个文件下通过env来区分,我们的项目中会出现大量诸如
const env = process.env.NODE_ENV || 'development'
const config = {
production: {
sms: 'http://xx.xx.158.59:8000/jet/textmessage',
vehicleInfo: 'http://cx.ins.xiaobeixx.com/quote/queryVehicleInfoForAppointment.json',
},
development: {
sms: 'http://xx.xx.100.63:8010/jet/textmessage',
vehicleInfo: 'http://xx.xx.96.131:8002/quote/queryVehicleInfoForAppointment.json',
},
preview: {
},
}
export default config[env]
配置多了,就不方便管理且影响代码的简洁,之前使用过PHP的CI框架,所以就想着能不能在Express体系下也进入该机制。
npm install expressjs-env-conf -S
在程序的入口处,一般是app.js
上引入
import { EnvConf } from 'expressjs-env-conf'
new EnvConf(config.root).init()
其中config.root
为配置文件的基础目录,执行完之后,就可以在全局使用$locaConf()
方法
比如在某个Controller
下
const testConf = $loadConf('test.js')
console.log(testConf)
该test.js存储于development
,test
等环境变量对应的文件夹下。
所有能导出的对象
import { env, EnvConf } from 'Nodejs-env-conf'
创建EnvConf实例
初始化环境配置,执行完之后,
- 会在config的基础目录下创建四个文件夹
developmen, test, preview, production
- 会在全局对象下附加
$loadConf
方法,这样在任何地方都可以通过$loadConf
加载配置。
获取process.env.NODE_ENV
初始化process.env.NODE_ENV
设置process.env.NODE_ENV
,但是有一些约束条件。
npm run build
"globals": {
"$loadConf": true
}
- 部分代码重构。
修复如果baseDir不存在的情况下,程序报的BUG
完成基本功能