本人小白,这里不懂原理只说问题和方法。
webpack默认的打包是production模式,并且只内置了production,development,2种模式,默认production打包会执行压缩;
网上很多多环境打包是直接配置 NODE_ENV = “xxx”,这样执行打包虽然会成功,但是没有压缩,不是我们想要的效果,说通俗些我们想要的效果就是打包出来的文件和直接build出来是一样的,只是配置的环境地址不同。
第一步:
在根目录建3个文件,和vue.config.js同级:
.env.development
NODE_ENV = 'development'
VUE_APP_BASE_URL = "/"
.env.lzw
NODE_ENV = 'production' //这里是标注模式,webpack只内置了production,development,2种模式,如果写其他的,能正常打包出来,但打包结果不会压缩,如果不想这样写,也可以自己去其他地方配置。甚至可以不写,不写就是默认的。
VUE_APP_TITLE = 'lzw' //VUE_APP_是规定的命名格式,TITLE是自己命名的变量,现在没有用到,可以在项目中用户环境判断使用,可根据需要自行增加其他参数
VUE_APP_BASE_URL = "http://lzwapi"
outputDir = dist-lzw
.env.production
NODE_ENV = 'production'
VUE_APP_TITLE = 'production'
VUE_APP_BASE_URL = "http://prod/api/"
outputDir = dist-prod
第二步:
在package.json中配置
"scripts": {
"serve": "vue-cli-service serve",
"build": "vue-cli-service build",
"build-all": "vue-cli-service build && vue-cli-service build --mode lzw",
"build-lzw": "vue-cli-service build --mode lzw",
//关键代码,build 打包会默认解析.env.production
//这里--mode lzw把环境切换成lzw环境,然后打包会解析.env.lzw中的配置
"lint": "vue-cli-service lint"
},
第三步:
可省略,配置输出文件夹
module.exports = {
outputDir: process.env.outputDir,
}
第四步:
可省略,配置不同环境中设置的地址路径:
let baseURL = process.env.VUE_APP_BASE_URL;
其他地方也可直接是使用,配置的参数信息
结束,现在就可以执行命令实现多环境 打包了