本人小白,這里不懂原理只說問題和方法。
webpack默認(rèn)的打包是production模式,并且只內(nèi)置了production阴幌,development,2種模式,默認(rèn)production打包會執(zhí)行壓縮胀溺;
網(wǎng)上很多多環(huán)境打包是直接配置?NODE_ENV = “xxx”,這樣執(zhí)行打包雖然會成功裂七,但是沒有壓縮,不是我們想要的效果仓坞,說通俗些我們想要的效果就是打包出來的文件和直接build出來是一樣的背零,只是配置的環(huán)境地址不同。
第一步:
在根目錄建3個文件无埃,和vue.config.js同級:
.env.development
NODE_ENV = 'development'
VUE_APP_BASE_URL? = "/"
.env.lzw
NODE_ENV = 'production'? //這里是標(biāo)注模式徙瓶,webpack只內(nèi)置了production毛雇,development,2種模式,如果寫其他的侦镇,能正常打包出來灵疮,但打包結(jié)果不會壓縮,如果不想這樣寫壳繁,也可以自己去其他地方配置震捣。甚至可以不寫,不寫就是默認(rèn)的闹炉。
VUE_APP_TITLE = 'lzw' //VUE_APP_是規(guī)定的命名格式,TITLE是自己命名的變量蒿赢,現(xiàn)在沒有用到,可以在項目中用戶環(huán)境判斷使用,可根據(jù)需要自行增加其他參數(shù)
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",
//關(guān)鍵代碼渣触,build 打包會默認(rèn)解析.env.production
//這里--mode lzw把環(huán)境切換成lzw環(huán)境羡棵,然后打包會解析.env.lzw中的配置
? "lint": "vue-cli-service lint"
},
第三步:
可省略,配置輸出文件夾
module.exports = {
? ??outputDir: process.env.outputDir,
}
第四步:
可省略嗅钻,配置不同環(huán)境中設(shè)置的地址路徑:
let baseURL = process.env.VUE_APP_BASE_URL;
其他地方也可直接是使用皂冰,配置的參數(shù)信息
結(jié)束,現(xiàn)在就可以執(zhí)行命令實現(xiàn)多環(huán)境 打包了