webpck 中添加環境變量

如何在webpack構建的項目中添加環境的變量?

需求是這樣的,需要在項目打包之後文件的引入添加絕對的路徑,而不是相對的路徑。

比如,打包完成的文件,可能是用來測試用的,測試的地址是aaa.yourcompany.com,而正式環境的地址是bbb.yourcompany.com,這個時候我們往往是用npm run build 來構建項目。那麼,因爲webpack中沒有window環境,就不可能獲得它的host,只能夠用node的一些方式進行處理了。

有一個控件非常好用,那就是cross-env。

操作步驟如下:

1、首先安裝cross-env:

npm install --save-dev cross-env

2、在你的json文件中使用,往往是package.json文件:

"scripts": {
    "dev": "cross-env NODE_ENV=development webpack-dev-server --config webpack.dev.js --mode development",
    "build": "cross-env NODE_ENV=production webpack --config webpack.prod.js --mode production",
    "build:ldwl": "cross-env NODE_ENV=productionldwl webpack --config webpack.prod.js --mode production"
     ...
}

3、process.env.NODE_ENV獲取到上一步驟的環境變量(development、production、productionldwl):

const NODE_ENV = process.env.NODE_ENV//環境變量
console.log(NODE_ENV )

4、獲取了環境變量就可以在打包的時候隨心所欲了。比如說:

npm run build:ldwl

就會構建過程中在控制檯上(日誌中)打印出了:productionldwl。然後自己去判斷輸出的絕對地址吧!

注意點: 如果環境變量沒有添加,是不能夠從日誌上看到process.env.NODE_ENV的值的,那個時候它還是undefined呢;cross-env是快速添加依賴的方式,如果想要手動添加,需要在webpack中的plugins添加一個依賴。

這樣就可以在打包的時候區分好環境,上線的文件可以直接引用絕對的上線地址了。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章