前言
我们在实际开发项目的时候,一个项目通常会多于2个版本,也就是开发版本和生产版本之外,还会有本地测试版本、线上测试版本等等若干个版本,这时候,每个版本可能都会对应不同的相关参数,或许数据库的连接地址不同,或许请求的API地址不同等等。为了方便管理,我们通常做成配置文件的形式,根据不同的环境,加载不同的文件。
通常脚手架工具都会提供2个版本,一个是开发版本,一个是生产版本,但这显然不够用,怎么办?
好办,给NODE_ENV增加新的值不就行了。
增加新的值的最简单办法是在package.json里面加,这样,既一目了然,又不入侵src目录的文件。
操作
package.json里往往会有这么一句:
"dev": "npm run dev",
"build": "npm run build",
现在我给它增加几个弟兄:
"lan": "export NODE_ENV='lan' && npm run dev",
"online_test": "export NODE_ENV='online_test' && npm run dev",
意思是,如果想生成局域网测试的代码,就执行npm lan
就好了,想生成线上测试的代码,就执行npm online_test
就好了。export
这句的意思一目了然,不解释。
当然了,只这么做还不够,还要你的代码中做对应的匹配,比如在你自己封装的request.js(或者叫http.js或者其他什么名字)里,需要写上大致这样的语句:
switch process.env.NODE_ENV {
case 'development': ....; break;
case 'production': ....; break;
case 'lan': ....; break;
case 'online_test': ....; break;
}
或者:
const map = {
development: '...',
production: '...',
lan: '...',
online_test: '...',
}
其他凡是依赖process.env.NODE_ENV的地方,都要有这种代码。
这样无论有多少种环境,也都不用愁了。