因为有本地开发环境,测试环境,生产环境
就像利用env去判断来有不同的url
本地的npm run dev的时候默认env就是dev
所以可以直接实现
但是打包的时候我看了一下build.js的代码
有一行是
process.env.NODE_ENV = 'production'
之后尝试打包之后发现线上打印process.env.NODE_ENV确实是preduction
之后便想着再新建一个打包文件
就复制build.js加了一个pre.js
然后把这一行代码的production改为了pre
并在package.json里
仿照
"build": "node build/build.js",
"pre": "node build/pre.js",
写了pre的打包
然后在自己的判断文件里判断
process.env.NODE_ENV 为dev就是本地环境的url 是pre就是测试环境的 是preduction就是生产环境的
结果发现用 npm run build 和 npm run pre
打包出来的ENV都是preduction。。。
不知道怎么搞了。
昨天自己研究了打包流程
发现打包的时候会引入了一个config文件
在config文件里面又一次定义了NODE_ENV导致覆盖了之前我的自定义
只需要再分开一份配置文件即可
但是后来发现了更好的解决方案
首先安装了cross-env
然后打包的时候就可以
来自定义env了
我自定义了个BUILD_ENV来做环境变量
这样也不需要新建文件 两个可以都使用build.js来处理
十分方便!
比如我的pre和build的打包分别为
然后只需要在自定义的判断文件里写下类似
我是自己封装了一下axios来请求,所以只需要在main.js里引入该js即可!
其他地方需要使用可以在main.js里引入并定义
这样在所有地方都可以取到啦
另外用DefinePlugin也是很方便的!
可以省略上面2个步骤。