從頭到腳瞧一瞧process.env.NODE_ENV

最近系統(tǒng)接入了公司的單點登錄写隶,為了登陸成功后再跳回系統(tǒng)的主頁面铜跑,又申請了測試和沙箱的域名(之前都是直接用IP登的),本地開發(fā)是配置的host坐梯。接入之后發(fā)現(xiàn)了一個非常麻煩的點就是給單點登錄傳的跳轉(zhuǎn)地址每次都要修改震嫉,開發(fā)的時候要寫成開發(fā)的域名森瘪,測試的時候要改成測試的域名,進(jìn)沙箱的時候要改成跳轉(zhuǎn)沙箱的域名责掏,上線的時候又要改成線上的域名。特別是在測試階段湃望,開發(fā)測試來回切換换衬,不勝其煩。
于是就想把它寫成配置文件证芭,根據(jù)不同環(huán)境加載不同的配置瞳浦,這樣就不用來回改了。這個時候废士,process.env就跳入了腦海叫潦,叫囂著,終于該我出場啦9傧酢矗蕊!

扒一扒process.env

process對象是全局變量,它提供當(dāng)前node.js的有關(guān)信息氢架,以及控制當(dāng)前node.js的有關(guān)進(jìn)程傻咖。因為是全局變量,它對于node應(yīng)用程序是始終可用的岖研,無需require()卿操。
既然process都是一個對象了,env自然是它的一個屬性,這個屬性返回包含用戶環(huán)境信息的對象害淤。在終端輸入node后扇雕,在輸入process.env可以看到打印出來的信息。

主角出場 process.env.NODE_ENV

NODE_ENV不是process.env對象上原有的屬性窥摄,它是我們自己添加上去的一個環(huán)境變量镶奉,用來確定當(dāng)前所處的開發(fā)階段。一般生產(chǎn)階段設(shè)為production溪王,開發(fā)階段設(shè)為develop腮鞍,然后在腳本中讀取process.env.NODE_ENV。
運(yùn)行腳本時莹菱,可以這樣改變環(huán)境變量, 在package.json文件的scripts里面添加命令:

NODE_ENV=production node build.js

但是這個命令使用Windows的同學(xué)拉下代碼后就報錯了移国,因為Windows上面設(shè)置的方式不一樣:

set NODE_ENV=production node build.js

但是不同電腦上不同的設(shè)置肯定是不行的呀,這個時候cross-env趕來救場了道伟。
cross-env可以跨平臺的設(shè)置和使用環(huán)境變量
安裝:

npm install --save-dev cross-env

接下來我們就可以通過cross-env來設(shè)置了

cross-env NODE_ENV=production node build.js

這樣設(shè)置之后迹缀,我們可以在腳本中使用process.env.NODE_ENV了,但是不能在模塊中使用蜜徽,要想在模塊當(dāng)中直接使用祝懂,我們還需要一些配置

DefinePlugin

DefinePlugin可以定義一些全局變量,讓我們在模塊當(dāng)中直接使用拘鞋,不用做任何聲明砚蓬。

const webpack = require('webpack');

module.exports = {
    entry: {
        app: './src/app'
    },
    output: {
        path: 'dist',
        filename: 'bundle.js'
    },
    plugins: [
        new webpack.DefinePlugin({
           'process.env.NODE_ENV':  'production'
        })
    ]
};

當(dāng)我們直接這樣定義的時候,編譯后是這個樣子的


bundle.png

DefinePlugin直接將內(nèi)容替換了盆色,而不是一個字符串灰蛙,所以我們經(jīng)常這樣定義:

new webpack.DefinePlugin({
      'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV)
})

這樣就可以直接使用啦_
現(xiàn)在我們要在模塊中根據(jù)環(huán)境變量來配置不同的url了

let url = '';
 if (process.env.NODE_ENV === 'testing') {
   url = 'http://my.test.cn';
 } else if (process.env.alpord === 'alpord') {
   url = 'http://my.alpord.cn';
 } else if (process.env.NODE_ENV === 'production') {
   url = 'http://my.product.cn';
 } else {
   url = 'http://my.develop.cn';
 }

這只是簡單列了一下process.env.NODE_ENV的用法,大家知道怎么用就好啦

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末隔躲,一起剝皮案震驚了整個濱河市摩梧,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌宣旱,老刑警劉巖仅父,帶你破解...
    沈念sama閱讀 221,820評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異浑吟,居然都是意外死亡笙纤,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評論 3 399
  • 文/潘曉璐 我一進(jìn)店門组力,熙熙樓的掌柜王于貴愁眉苦臉地迎上來粪糙,“玉大人,你說我怎么就攤上這事忿项∪馗裕” “怎么了城舞?”我有些...
    開封第一講書人閱讀 168,324評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長寞酿。 經(jīng)常有香客問我家夺,道長,這世上最難降的妖魔是什么伐弹? 我笑而不...
    開封第一講書人閱讀 59,714評論 1 297
  • 正文 為了忘掉前任拉馋,我火速辦了婚禮,結(jié)果婚禮上惨好,老公的妹妹穿的比我還像新娘煌茴。我一直安慰自己,他們只是感情好日川,可當(dāng)我...
    茶點故事閱讀 68,724評論 6 397
  • 文/花漫 我一把揭開白布蔓腐。 她就那樣靜靜地躺著,像睡著了一般龄句。 火紅的嫁衣襯著肌膚如雪回论。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,328評論 1 310
  • 那天分歇,我揣著相機(jī)與錄音傀蓉,去河邊找鬼。 笑死职抡,一個胖子當(dāng)著我的面吹牛葬燎,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播缚甩,決...
    沈念sama閱讀 40,897評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼谱净,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了蹄胰?” 一聲冷哼從身側(cè)響起岳遥,我...
    開封第一講書人閱讀 39,804評論 0 276
  • 序言:老撾萬榮一對情侶失蹤奕翔,失蹤者是張志新(化名)和其女友劉穎裕寨,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體派继,經(jīng)...
    沈念sama閱讀 46,345評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡宾袜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,431評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了驾窟。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片庆猫。...
    茶點故事閱讀 40,561評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖绅络,靈堂內(nèi)的尸體忽然破棺而出月培,到底是詐尸還是另有隱情嘁字,我是刑警寧澤,帶...
    沈念sama閱讀 36,238評論 5 350
  • 正文 年R本政府宣布杉畜,位于F島的核電站纪蜒,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏此叠。R本人自食惡果不足惜纯续,卻給世界環(huán)境...
    茶點故事閱讀 41,928評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望灭袁。 院中可真熱鬧猬错,春花似錦、人聲如沸茸歧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽举娩。三九已至析校,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背臼隔。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評論 1 272
  • 我被黑心中介騙來泰國打工萨西, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人吊奢。 一個月前我還...
    沈念sama閱讀 48,983評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像纹烹,于是被迫代替她去往敵國和親页滚。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,573評論 2 359

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理铺呵,服務(wù)發(fā)現(xiàn)裹驰,斷路器,智...
    卡卡羅2017閱讀 134,702評論 18 139
  • 面試題一:https://github.com/jimuyouyou/node-interview-questio...
    R_X閱讀 1,625評論 0 5
  • https://nodejs.org/api/documentation.html 工具模塊 Assert 測試 ...
    KeKeMars閱讀 6,339評論 0 6
  • 二十年前 你嫁個老頭 成了他的老婆 現(xiàn)在 你是老婆 他還是老頭 別再說一些 讓自己陶醉的話了 你的姑娘都成了別人的...
    暖男邱閱讀 120評論 0 0
  • 人類遷徙的腳步片挂,布滿全球幻林。 亞伯拉罕,得到上帝的呼召:你要離開本地本族父家音念,往我所要指示你的地方沪饺。上帝就是這樣讓富...
    鹿慕溪畔閱讀 368評論 1 1