node不同環(huán)境變量的配置和常用包

在使用webpack對(duì)項(xiàng)目進(jìn)行打包構(gòu)建的時(shí)候一般都會(huì)區(qū)分開發(fā)環(huán)境和生產(chǎn)環(huán)境,這樣做的好處不言而喻,我們可以在不同的環(huán)境做一些不同的配置,例如生產(chǎn)環(huán)境為了減輕代碼體積會(huì)做一些壓縮之類的優(yōu)化;而開發(fā)環(huán)境為了方便我們開發(fā)調(diào)試,需要做一些代碼檢查,模塊熱更新之類的配置。因此,針對(duì)這兩類環(huán)境我們也有一些固定的配置項(xiàng)。怎樣在執(zhí)行時(shí)根據(jù)環(huán)境的不同讀取這些配置項(xiàng)并把他們加入到環(huán)境變量中去呢?如果直接在代碼中寫肯定不是一個(gè)好方法。這里就引出來今天我們要講的第一個(gè)包: dotenv,可以幫助我們將環(huán)境之外的配置獨(dú)立于代碼之外。

dotenv

使用dotenv時(shí),我們可以先將環(huán)境的配置寫在單獨(dú)的.env文件中,如下圖所示:

截屏2022-03-16 下午2.21.36.png

使用的時(shí)候:

截屏2022-03-16 下午2.23.14.png

然后讓我們來執(zhí)行這個(gè)文件,得到的結(jié)果:


截屏2022-03-16 下午2.26.06.png

可以看出,我們之前在.env文件中設(shè)置一些配置項(xiàng)已經(jīng)被注入到process.env中,可以方便我們隨時(shí)讀取。

webpack.DefinePlugin

這時(shí),我們雖然把于環(huán)境相關(guān)的配置項(xiàng)放入process.env中去了,但是,我們的瀏覽器環(huán)境不是node,無法讀取process.env中的變量,如果我們?cè)诖a中也想根據(jù)不同的環(huán)境做一些不同的操作怎么辦呢?不用擔(dān)心,webpack早就給我們提供了definePlugin這個(gè)內(nèi)置插件,可以幫助我們定義全局變量。

    plugins:[
        new Webpack.DefineWebpackPlugin({'process.env': ...})
    ]

這樣,我們就可以在代碼中直接調(diào)用process.env中變量啦


截屏2022-03-16 下午2.41.27.png

cross-env

在設(shè)置環(huán)境變量時(shí),window機(jī)器上可能不支持NODE_ENV=XXX的方式。cross-env這個(gè)包就是幫助解決這個(gè)問題的,它能夠提供一個(gè)設(shè)置環(huán)境變量的scripts,讓你能夠以u(píng)nix方式統(tǒng)一設(shè)置環(huán)境變量。

{
  "scripts": {
    "build": "cross-env NODE_ENV=production webpack --config build/webpack.config.js"
  }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容