寫在前面
前面寫了一篇有關webpack4的不完全升級指南以及在webpack3.x遷移的時候遇到的問題,有興許可以看一下。
0. 參數介紹
先對參數有一個大概的認識,雖然擼了很多遍官方的更新文檔,但是還是去參看了一下新的wbepack源碼,下面是各種參數及含義:
initial
(初始塊)、async
(按需加載塊)、all
(全部塊),默認為all
;對于緩存組是一個對象,處了可以有上面的chunks
、minSize
、minChunks
、maxAsyncRequests
、maxInitialRequests
、name
外,還有其他的一些參數:
如果不在緩存組中重新賦值,緩存組默認繼承上面的選項,但是還有一些參數是必須在緩存組進行配置的。
function
、boolean
、string
、RegExp
,默認為空;1. 基本使用
首先,在新版本的webpack會默認對代碼進行拆分,拆分的規則是:
node_modules
中的模塊小于30kb的模塊不值得再單獨發送一次請求,在很小的模塊的前提下,相比與多次打包,減少請求次數成本要低。
當然也可以不使用默認的配置,比如這樣:
new webpack.optimize.SplitChunksPlugin({ chunks: "all", minSize: 20000, minChunks: 1, maxAsyncRequests: 5, maxInitialRequests: 3, name: true )}
上面的代碼就表示,在所有代碼中,引用模塊大小最小為20kb,引用次數最少為1次,按需加載最大請求次數為5,初始化加載最大請求次數為3的所有模塊就行拆分到一個單獨的代碼塊中,name
表示代碼的名字,設置為true
則表示根據模塊和緩存組秘鑰自動生成。
2. 使用緩存組(Cache Groups)
如果想繼續細分代碼,可以使用緩存組(Cache Groups)。同樣的,緩存組也有默認的配置;緩存組默認將node_modules
中的模塊拆分帶一個叫做vendors
的代碼塊中,將最少重復引用兩次的模塊放入default
中。
這是一段官方里面的代碼:
splitChunks: { chunks: "async", minSize: 30000, minChunks: 1, maxAsyncRequests: 5, maxInitialRequests: 3, name: true, cacheGroups: { default: { minChunks: 2, priority: -20 reuseExistingChunk: true, }, vendors: { test: /[\\/]node_modules[\\/]/, priority: -10 } } }
上面是緩存組的默認配置,可以通過default:false
禁用默認的緩存組,然后就可以自定義緩存組,將初始化加載時被重復引用的模塊進行拆分,就像這樣:
cacheGroups: { commons: { name: "commons", chunks: "initial", minChunks: 2 } }
之后就隨心所欲,可以根據具體的需求,創建多個緩存組:
cacheGroups: { a: { // ... }, b: { // ... } // ... }
寫在后面
webpack更新已經過了很多天了,最近算是把更新的基本都過了一遍,在此記錄以便日后查看,理解有問題的地方還請不吝賜教。
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com