前言
我們在實際開發(fā)項目的時候啡省,一個項目通常會多于2個版本娜睛,也就是開發(fā)版本和生產(chǎn)版本之外髓霞,還會有本地測試版本、線上測試版本等等若干個版本畦戒,這時候方库,每個版本可能都會對應(yīng)不同的相關(guān)參數(shù),或許數(shù)據(jù)庫的連接地址不同障斋,或許請求的API地址不同等等纵潦。為了方便管理,我們通常做成配置文件的形式垃环,根據(jù)不同的環(huán)境邀层,加載不同的文件。
通常腳手架工具都會提供2個版本晴裹,一個是開發(fā)版本被济,一個是生產(chǎn)版本,但這顯然不夠用涧团,怎么辦?
好辦经磅,給NODE_ENV增加新的值不就行了泌绣。
增加新的值的最簡單辦法是在package.json里面加,這樣预厌,既一目了然阿迈,又不入侵src目錄的文件。
操作
package.json里往往會有這么一句:
"dev": "npm run dev",
"build": "npm run build",
現(xiàn)在我給它增加幾個弟兄:
"lan": "export NODE_ENV='lan' && npm run dev",
"online_test": "export NODE_ENV='online_test' && npm run dev",
意思是轧叽,如果想生成局域網(wǎng)測試的代碼苗沧,就執(zhí)行npm lan
就好了,想生成線上測試的代碼炭晒,就執(zhí)行npm online_test
就好了待逞。export
這句的意思一目了然,不解釋网严。
當(dāng)然了识樱,只這么做還不夠,還要你的代碼中做對應(yīng)的匹配震束,比如在你自己封裝的request.js(或者叫http.js或者其他什么名字)里怜庸,需要寫上大致這樣的語句:
switch process.env.NODE_ENV {
case 'development': ....; break;
case 'production': ....; break;
case 'lan': ....; break;
case 'online_test': ....; break;
}
或者:
const map = {
development: '...',
production: '...',
lan: '...',
online_test: '...',
}
其他凡是依賴process.env.NODE_ENV的地方,都要有這種代碼垢村。
這樣無論有多少種環(huán)境割疾,也都不用愁了。