多环境打包实现

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;

其他地方也可直接是使用,配置的参数信息

结束,现在就可以执行命令实现多环境 打包了

参考:https://www.jianshu.com/p/9936aa26a3b7

原文地址:https://www.cnblogs.com/miaSlady/p/15765679.html