webpack4環(huán)境配置之process.env

通常情況下炫七,我們需要針對不同環(huán)境(開發(fā)環(huán)境磕蛇、集成環(huán)境音羞、生產環(huán)境等)囱桨,進行相應策略的打包(比如是否替換接口地址,代碼是否壓縮等)嗅绰。webpack就是通過process.env屬性加以區(qū)分舍肠。

webpack是npm生態(tài)中的一個模塊,webpack的運行依賴于node的環(huán)境窘面,沒有node是不能打包的翠语。這里的process.env就是Nodejs提供的一個API,它返回一個包含用戶環(huán)境信息的對象财边。如果我們給Nodejs 設置一個環(huán)境變量肌括,并把它掛載在 process.env 返回的對象上,便可以在代碼中進行相應的環(huán)境判斷酣难。

process.env

process.env屬性返回一個對象谍夭,包含了當前Shell的所有環(huán)境變量黑滴。比如,process.env.HOME返回用戶的主目錄慧库。

通常的做法是跷跪,新建一個環(huán)境變量NODE_ENV,用它確定當前所處的開發(fā)階段齐板,生產階段設為production吵瞻,開發(fā)階段設為development或staging,然后在腳本中讀取process.env.NODE_ENV即可甘磨。
要說明的是橡羞,NODE_ENV 這個名稱只是開發(fā)社區(qū)的一種共識,名稱內容是可以修改的济舆。如果需要卿泽,你也可以把它定義為 NODE_abc或者xxx都行。下邊我們按照約定就以NODE_ENV來說滋觉。

在Webpack配置文件中签夭,經常會看到如下類似的代碼:

// webpack.config.js
module.exports = {
  mode: process.env.NODE_ENV === 'production' ? 'production' : 'development'
}

process.env是Nodejs提供的一個API,那么如果想用process.env.NODE_ENV椎侠,就必須先設置其值才能用第租。
但是如何設置 這個process.env.NODE_ENV環(huán)境變量呢?在webpack項目里我纪,我們可以通過設置package.json來實現慎宾,但是Windows 系統(tǒng)和Mac系統(tǒng)有區(qū)別。

Windows 系統(tǒng)

// package.json
{
  ...
  "scripts": {
    "dev": "set NODE_ENV=development &&  webpack-dev-server --open --hot",
    "build": "set NODE_ENV=production &&   --progress --hide-modules"
  }
}

Mac 系統(tǒng)

// package.json
{
  ...
  "scripts": {
    "dev": "export NODE_ENV=development &&  webpack-dev-server --open --hot",
    "build": "export NODE_ENV=production &&   --progress --hide-modules"
  }
}

但它們的語法都不盡相同浅悉。這就帶來兩個問題:
那么問題又來了趟据,我在Windows 開發(fā)部署的項目,可能在 Mac 系統(tǒng)無法正常打包术健,反之亦然汹碱。為了解決這個問題,有人就開發(fā)了 cross-env苛坚。

cross-env是一個跨平臺設置環(huán)境變量的第三方包比被,它可以讓你只配置一行命令,就能輕松地在多個平臺設置環(huán)境變量泼舱。首先先安裝

npm install --save-dev cross-env 

然后配置package.json就可以了

// package.json
{
  ...
  "scripts": {
    "dev": "cross-env NODE_ENV=development webpack-dev-server --open --hot",
    "build": "cross-env NODE_ENV=production webpack --mode=production  --progress --hide-modules"
  },
}

這樣我們就可以在項目里取到process.env.NODE_ENV的值,然后利用這個值來區(qū)分當前環(huán)境枷莉。

?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末娇昙,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子笤妙,更是在濱河造成了極大的恐慌冒掌,老刑警劉巖噪裕,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異股毫,居然都是意外死亡膳音,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進店門铃诬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來祭陷,“玉大人,你說我怎么就攤上這事趣席”荆” “怎么了?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵宣肚,是天一觀的道長想罕。 經常有香客問我,道長霉涨,這世上最難降的妖魔是什么按价? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮笙瑟,結果婚禮上楼镐,老公的妹妹穿的比我還像新娘。我一直安慰自己逮走,他們只是感情好鸠蚪,可當我...
    茶點故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著师溅,像睡著了一般茅信。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上墓臭,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天蘸鲸,我揣著相機與錄音,去河邊找鬼窿锉。 笑死酌摇,一個胖子當著我的面吹牛,可吹牛的內容都是我干的嗡载。 我是一名探鬼主播窑多,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼洼滚!你這毒婦竟也來了埂息?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎千康,沒想到半個月后享幽,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡拾弃,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年值桩,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片豪椿。...
    茶點故事閱讀 40,424評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡奔坟,死狀恐怖,靈堂內的尸體忽然破棺而出砂碉,到底是詐尸還是另有隱情蛀蜜,我是刑警寧澤,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布增蹭,位于F島的核電站滴某,受9級特大地震影響,放射性物質發(fā)生泄漏滋迈。R本人自食惡果不足惜霎奢,卻給世界環(huán)境...
    茶點故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望饼灿。 院中可真熱鬧幕侠,春花似錦、人聲如沸碍彭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽庇忌。三九已至舞箍,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間皆疹,已是汗流浹背疏橄。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留略就,地道東北人捎迫。 一個月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像表牢,于是被迫代替她去往敵國和親窄绒。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,435評論 2 359

推薦閱讀更多精彩內容