vue-cli 3分環(huán)境打包

在vue的項(xiàng)目開發(fā)中历筝,往往代碼要在本地開發(fā)環(huán)境友鼻、測試環(huán)境傻昙、預(yù)發(fā)環(huán)境闺骚、生產(chǎn)環(huán)境等各種環(huán)境下執(zhí)行,各個(gè)環(huán)境所對應(yīng)的api接口地址也是不同的妆档,如果每次打包都手動(dòng)的修改接口地址僻爽,是很低效的,也是很容易出錯(cuò)的贾惦,如果在打包的時(shí)候忘記修改接口地址胸梆,后果也是很嚴(yán)重的。

寫一個(gè)配置文件须板,可以根據(jù)環(huán)境的不同碰镜,自動(dòng)切換接口地址是很有必要的。

在號(hào)稱零配置vue-cli3中习瑰,該如何配置呢绪颖?

vue-cli3的項(xiàng)目中,
npm run serve時(shí)會(huì)把process.env.NODE_ENV設(shè)置為‘development’杰刽;
npm run build 時(shí)會(huì)把process.env.NODE_ENV設(shè)置為‘production’菠发;

根據(jù)process.env.NODE_ENV設(shè)置不同請求url就可以區(qū)分出本地和線上環(huán)境。

但是贺嫂,凡事最怕但是滓鸠,但是實(shí)際開發(fā)過程中涉及到的環(huán)境可能不止這兩種,還可能會(huì)有測試環(huán)境第喳,預(yù)發(fā)環(huán)境和生產(chǎn)環(huán)境等等糜俗。

同樣是執(zhí)行npm run build,怎么手動(dòng)更改process.env.NODE_ENV曲饱?

具體步驟如下: (以預(yù)發(fā)環(huán)境為例)
  • ** package.json**的scripts中添加 "pre": "vue-cli-service build --mode pre"

  • 項(xiàng)目根目錄添加文件“.env.pre”悠抹,其內(nèi)容:NODE_ENV = 'pre'
    是的,只寫這一句就行了扩淀!

(命令中用到的mode脂倦,文章最后會(huì)講到)
這樣洋幻,npm run pre即打預(yù)發(fā)環(huán)境包屁倔,npm run build則打生產(chǎn)包

這主要得益于在 vue-cli 3.0.x 里面支持 “.env” 文件配置

通過改變process.env.NODE_ENV值區(qū)分打包環(huán)境奈嘿,但是webpack打包時(shí)針對process.env.NODE_ENV===‘production’和其他情況打出來的包結(jié)構(gòu)和大小都不一樣;

怎么消除這種差異胜臊?
思路:原來是根據(jù)process.env.NODE_ENV的值來區(qū)分勺卢,能不能換個(gè)值作區(qū)分?
可以使用其他變量比如process.env.VUE_APP_TITLE來區(qū)分環(huán)境

與上面不同的是象对,.env.pre文件中的內(nèi)容做一下修改:

NODE_ENV = 'production' 
VUE_APP_TITLE = 'pre'

注意:NODE_ENV改成了production黑忱,將VUE_APP_TITLE的值置為了pre(只有VUE_APP_開頭的環(huán)境變量可以在項(xiàng)目代碼中直接使用)

只有以 VUE_APP_ 開頭的變量會(huì)被 webpack.DefinePlugin 靜態(tài)嵌入到客戶端側(cè)的包中(即在項(xiàng)目代碼中使用)。你可以在應(yīng)用的代碼中這樣訪問它們:

模式概念:
模式是 Vue CLI 項(xiàng)目中一個(gè)重要的概念。一般情況下 Vue CLI 項(xiàng)目有三個(gè)默認(rèn)模式:
development 模式用于 vue-cli-service serve
production 模式用于 vue-cli-service build 和 vue-cli-service test:e2e
test 模式用于 vue-cli-service test:unit
模式不等同于 NODE_ENV甫煞,一個(gè)模式可以包含多個(gè)環(huán)境變量菇曲。也就是說,每個(gè)模式都將 NODE_ENV的值設(shè)置為模式的名稱(可重新賦值更改)——比如在 development 模式下 NODE_ENV 的值會(huì)被設(shè)置為 “development”抚吠。

你可以通過為 .env 文件增加后綴來設(shè)置某個(gè)模式下特有的環(huán)境變量羊娃。比如,如果你在項(xiàng)目根目錄創(chuàng)建一個(gè)名為 .env.development 的文件埃跷,那么在這個(gè)文件里聲明過的變量就只會(huì)在 development 模式下被載入。

你可以通過傳遞 --mode 選項(xiàng)參數(shù)為命令行覆寫默認(rèn)的模式邮利。例如弥雹,如果你想要在構(gòu)建命令中使用開發(fā)環(huán)境變量,請?jiān)谀愕?package.json 腳本中加入:

"dev-build": "vue-cli-service build --mode development",

在項(xiàng)目根路徑創(chuàng)建.env.test文件延届,內(nèi)容為

NODE_ENV='production' //表明這是生產(chǎn)環(huán)境(需要打包)
VUE_APP_CURRENTMODE='test' // 表明生產(chǎn)環(huán)境模式信息
VUE_APP_BASEURL='http://***.****.com:8000' // 測試服務(wù)器地址

修改項(xiàng)目中的api接口文件
在我的項(xiàng)目中,一般會(huì)創(chuàng)建一個(gè)api.js 來管理所有的接口url
因?yàn)槲覀冊诒镜亻_發(fā)環(huán)境中是通過代理來連接服務(wù)器的,所以將url寫成這

在文件開頭通過環(huán)境變量改變baseUrl

let baseUrl = '';
if (process.env.NODE_ENV == 'development') {
baseUrl = ""
} else if (process.env.NODE_ENV == 'production') {
baseUrl = process.env.VUE_APP_BASEURL
} else {
baseUrl = ""
}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末剪勿,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子方庭,更是在濱河造成了極大的恐慌厕吉,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件械念,死亡現(xiàn)場離奇詭異头朱,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)龄减,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門项钮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人希停,你說我怎么就攤上這事烁巫。” “怎么了宠能?”我有些...
    開封第一講書人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵亚隙,是天一觀的道長。 經(jīng)常有香客問我违崇,道長阿弃,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任亦歉,我火速辦了婚禮恤浪,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘肴楷。我一直安慰自己水由,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開白布赛蔫。 她就那樣靜靜地躺著砂客,像睡著了一般泥张。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上鞠值,一...
    開封第一講書人閱讀 51,631評(píng)論 1 305
  • 那天媚创,我揣著相機(jī)與錄音,去河邊找鬼彤恶。 笑死钞钙,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的声离。 我是一名探鬼主播芒炼,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼术徊!你這毒婦竟也來了本刽?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬榮一對情侶失蹤赠涮,失蹤者是張志新(化名)和其女友劉穎子寓,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體笋除,經(jīng)...
    沈念sama閱讀 45,724評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡斜友,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了株憾。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蝙寨。...
    茶點(diǎn)故事閱讀 40,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖嗤瞎,靈堂內(nèi)的尸體忽然破棺而出墙歪,到底是詐尸還是另有隱情,我是刑警寧澤贝奇,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布虹菲,位于F島的核電站,受9級(jí)特大地震影響掉瞳,放射性物質(zhì)發(fā)生泄漏毕源。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一陕习、第九天 我趴在偏房一處隱蔽的房頂上張望霎褐。 院中可真熱鬧,春花似錦该镣、人聲如沸冻璃。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽省艳。三九已至娘纷,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間跋炕,已是汗流浹背赖晶。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留辐烂,地道東北人遏插。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像纠修,于是被迫代替她去往敵國和親涩堤。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容