webpack打包第三方類庫的正確姿勢

2021-09-19 04:46:43 字數 936 閱讀 5198

webpack 的使用越來越廣泛,但其中不乏很多鮮為人知的細節設定,甚至很多人會認為這是 webpack 的 bug。這次,我們就來聊一聊 webpack.optimize.commonschunkplugin。

這個 plugin 我相信幾乎90%的用 webpack 的都用了這個,但我同樣相信幾乎 90% 的用了這個 plugin 的人都沒有正確的使用。

entry: ,

output: ,

plugins: [

new webpack.optimize.commonschunkplugin(),

]

上面這個配置應該大家都不陌生吧?打包第三方 vendor。

其實這樣寫是有問題的。有什麼問題呢?我們根據這個配置來操作一下:

首先,執行起來,我們會得到 vendor.js 的新增 hash 值過後的輸出;

然後,修改index入口裡面的任意檔案,再次編譯,得到 vendor.js 的新增 hash 值過後的輸出;

最後,比較 vendor.js 兩次編譯的hash的值,你會驚訝的發現,為什麼hash值改變了?我並沒有修改vendor啊。

hash值改變了,那我們打包這個vendor也就沒有意義了。

至於為什麼會造成這個問題,我就不班門弄斧了,想要知道的人自己去研究一下webpack的底層。

在這裡,我只是丟擲乙個解決方案:

entry: ,

output: ,

plugins: [

new webpack.optimize.commonschunkplugin(),

]

沒錯,就是上面這個配置,只是簡單的加了 'manifest' 。

再次做我們前面的測試,你會發現多了乙個manifest.js,但是vendor的hash值不再變化了。

點到為止,江湖再見。

webpack02 優化第三方庫的打包效能

在引入第三方的庫之後使用webpack打包時,缺省會將這些第三方的庫重新打包,但是實際上需要重新打包的只有業務 這些第三方庫是完全不用重新打包的,所以需要對這個過程進行優化。webpack可以配置externals來將依賴的庫指向全域性變數,從而不再打包這個庫,比如對於react import re...

Python第三方打包庫 PyInstaller

1 介紹 pyinstaller是python的第三方打包庫,它可以實現將.py副檔名的任何python的源 轉換成windows linux mac os x下面的可執行檔案。對於windows來講,pyinstaller可以將python源 變成.exe的可執行檔案,這樣就可以直接執行程式,而不...

webpack 引用打包第三方全域性依賴3種方式

webpack.config.js package.json node modules src index.js test.js還記得我們之前文章中使用過的lodash嗎?讓我們把這個模組作為我們應用程式中的乙個全域性變數。要實現這些,我們需要使用provideplugin外掛程式。使用provid...