摘要:開(kāi)發(fā)環(huán)境和生產(chǎn)環(huán)境分離的原因在開(kāi)發(fā)時(shí),會(huì)產(chǎn)生或者是測(cè)試的代碼,這些代碼不應(yīng)該出現(xiàn)在生產(chǎn)環(huán)境中。當(dāng)項(xiàng)目部署時(shí),往往會(huì)將代碼進(jìn)行一系列的壓縮來(lái)優(yōu)化它,如此會(huì)徹底破壞代碼的可讀性。方案二使用這個(gè)參數(shù)來(lái)辨別開(kāi)發(fā)環(huán)境。
開(kāi)發(fā)環(huán)境和生產(chǎn)環(huán)境分離的原因
在開(kāi)發(fā)時(shí),會(huì)產(chǎn)生 debug 或者是測(cè)試的代碼,這些代碼不應(yīng)該出現(xiàn)在生產(chǎn)環(huán)境中。當(dāng)項(xiàng)目部署時(shí),往往會(huì)將代碼進(jìn)行一系列的壓縮來(lái)優(yōu)化它,如此會(huì)徹底破壞代碼的可讀性。本地開(kāi)發(fā)往往使用的是本地 mock 的數(shù)據(jù),而正是上線后用的是真實(shí)數(shù)據(jù)。以上幾點(diǎn),開(kāi)發(fā)環(huán)境和生產(chǎn)環(huán)境必須得分離。
比如我想讓項(xiàng)目根據(jù)不同的環(huán)境登錄不同的地址。本地開(kāi)發(fā)登錄的是localhost,測(cè)試環(huán)境登錄的是test地址,上線環(huán)境登錄的是online地址。那么業(yè)務(wù)代碼里如何判斷生產(chǎn)開(kāi)發(fā)測(cè)試環(huán)境呢?
方案一 將環(huán)境變量配置到 package.json// package.json { // npm install cross-env // 因?yàn)閙ac和windows設(shè)置命令環(huán)境變量的命令不一致, 所以用cross-env來(lái)做兼容 "script": { "dev": "cross-env NODE_ENV=dev webpack --progress --colors", "production": "cross-env NODE_ENV=production webpack --progress --colors" } } // npm run dev // 開(kāi)發(fā) // npm run production // 生產(chǎn)
那么 package.json 的 script中的參數(shù), webpack文件中如何讀取呢?
在 webpack 中, 可通過(guò) process.env.NODE_ENV獲取到變量
// webpack 下 plugins: [ new webpack.DefinePlugin({ "process.env": { NODE_ENV: JSON.stringify(process.env.NODE_ENV) } }) ]
為什么需要加上JSON.stringify, 因?yàn)閣ebpack 打包的時(shí)候?qū)ψ兞孔鎏鎿Q會(huì)將 process.env.NODE_ENV 替換成 production, 而我們期望的是 "production"
有個(gè)問(wèn)題,new webpack.DefinePlugin 定義的全局變量是 在編譯時(shí)可以配置的全局常量。,那么,如何在 webpack config 文件中使用 process.env.NODE_ENV 呢?
就是上面的回答,在腳本中設(shè)置變量 并且用上cross-env。 因此經(jīng)常兩者結(jié)合使用。
使用process.env.npm_lifecycle_event 這個(gè)參數(shù)來(lái)辨別開(kāi)發(fā)環(huán)境。
npm 提供一個(gè) npm_lifecycle_event 變量,返回當(dāng)前正在運(yùn)行的腳本名稱
這個(gè)方法極為簡(jiǎn)單。
npm scripts 使用指南
webpack.DefinePlugin使用介紹
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/97141.html
摘要:開(kāi)發(fā)環(huán)境和生產(chǎn)環(huán)境都擁有的配置,但在細(xì)節(jié)上有所不同,比如說(shuō),又比如說(shuō)中的和參數(shù)。更重要的是,實(shí)際上開(kāi)發(fā)環(huán)境和生產(chǎn)環(huán)境的配置文件的絕大部分都是一致的,對(duì)于這一致的部分來(lái)說(shuō),我們堅(jiān)決要消除冗余,否則后續(xù)維護(hù)起來(lái)不僅麻煩,而且還容易出錯(cuò)。 本文首發(fā)于Array_Huang的技術(shù)博客——實(shí)用至上,非經(jīng)作者同意,請(qǐng)勿轉(zhuǎn)載。原文地址:https://segmentfault.com/a/11900...
摘要:接口測(cè)試主要用于檢測(cè)外部系統(tǒng)與系統(tǒng)之間以及內(nèi)部各個(gè)子系統(tǒng)之間的交互點(diǎn)。隨著案例和執(zhí)行結(jié)果的不斷積累,接口測(cè)試覆蓋會(huì)更加充分,統(tǒng)計(jì)結(jié)果會(huì)更加精確。 原文出自【聽(tīng)云技術(shù)博客】:http://blog.tingyun.com/web/a... 今年遇到了幾個(gè)問(wèn)題,與接口的功能和性能相關(guān),恰巧最近公司也在組織以冒煙測(cè)試為主題的活動(dòng),于是乎突發(fā)奇想,尋思著能否將接口測(cè)試與冒煙測(cè)試結(jié)合起來(lái),發(fā)掘一...
摘要:一返回值調(diào)用外部方法獲取的值需要對(duì)類型做判斷,因?yàn)槲覀儗?duì)方法返回的值是有期望值類型,但是卻不能保證這個(gè)接口返回的值一直是同一個(gè)類型。 19年目標(biāo):消滅英語(yǔ)!我新開(kāi)了一個(gè)公眾號(hào)記錄一個(gè)程序員學(xué)英語(yǔ)的歷程 有提升英語(yǔ)訴求的小伙伴可以關(guān)注公眾號(hào):csenglish 程序員學(xué)英語(yǔ),每天花10分鐘交作業(yè),跟我一起學(xué)英語(yǔ)吧 javascript作為一門(mén)動(dòng)態(tài)類型語(yǔ)言,具有很高的動(dòng)態(tài)靈活性,當(dāng)定義函數(shù)...
摘要:大交通研發(fā)質(zhì)量體系建設(shè)為了幫助用戶更好地完成消費(fèi)決策閉環(huán),馬蜂窩上線了大交通業(yè)務(wù),為用戶提供購(gòu)買機(jī)票火車票等服務(wù)。 質(zhì)量是決定產(chǎn)品能否成功、企業(yè)能否持續(xù)發(fā)展的關(guān)鍵因素之一。如何做好質(zhì)量體系建設(shè),這是個(gè)比較大的話題,包含的范圍很廣,也沒(méi)有固定的衡量標(biāo)準(zhǔn)。 打開(kāi)一個(gè)互聯(lián)網(wǎng)公司招聘網(wǎng)站,搜索「測(cè)試工程師」崗位時(shí),你會(huì)發(fā)現(xiàn)幾乎全部 JD 都包含一條要求「建設(shè)或者參與建設(shè)所負(fù)責(zé)業(yè)務(wù)的質(zhì)量體系」。...
摘要:大交通研發(fā)質(zhì)量體系建設(shè)為了幫助用戶更好地完成消費(fèi)決策閉環(huán),馬蜂窩上線了大交通業(yè)務(wù),為用戶提供購(gòu)買機(jī)票火車票等服務(wù)。 質(zhì)量是決定產(chǎn)品能否成功、企業(yè)能否持續(xù)發(fā)展的關(guān)鍵因素之一。如何做好質(zhì)量體系建設(shè),這是個(gè)比較大的話題,包含的范圍很廣,也沒(méi)有固定的衡量標(biāo)準(zhǔn)。 打開(kāi)一個(gè)互聯(lián)網(wǎng)公司招聘網(wǎng)站,搜索「測(cè)試工程師」崗位時(shí),你會(huì)發(fā)現(xiàn)幾乎全部 JD 都包含一條要求「建設(shè)或者參與建設(shè)所負(fù)責(zé)業(yè)務(wù)的質(zhì)量體系」。...
閱讀 1885·2021-09-29 09:35
閱讀 2753·2021-09-22 15:25
閱讀 2001·2021-08-23 09:43
閱讀 2080·2019-08-30 15:54
閱讀 3375·2019-08-30 15:53
閱讀 2416·2019-08-30 13:50
閱讀 2423·2019-08-30 11:24
閱讀 2295·2019-08-29 15:37