webpack4之SplitChunksPlugin使用指南
寫在前面
前面寫了一篇有關webpack4的不完全升級指南以及在webpack3.x遷移的時候遇到的問題,有興許可以看一下。
0. 參數(shù)介紹
先對參數(shù)有一個大概的認識,雖然擼了很多遍官方的更新文檔,但是還是去參看了一下新的wbepack源碼,下面是各種參數(shù)及含義:
- chunks: 表示顯示塊的范圍,有三個可選值:
initial(初始塊)、async(按需加載塊)、all(全部塊),默認為all; - minSize: 表示在壓縮前的最小模塊大小,默認為0;
- minChunks: 表示被引用次數(shù),默認為1;
- maxAsyncRequests: 最大的按需(異步)加載次數(shù),默認為1;
- maxInitialRequests: 最大的初始化加載次數(shù),默認為1;
- name: 拆分出來塊的名字(Chunk Names),默認由塊名和hash值自動生成;
- cacheGroups: 緩存組。
對于緩存組是一個對象,處了可以有上面的chunks、minSize、minChunks、maxAsyncRequests、maxInitialRequests、name外,還有其他的一些參數(shù):
如果不在緩存組中重新賦值,緩存組默認繼承上面的選項,但是還有一些參數(shù)是必須在緩存組進行配置的。
- priority: 表示緩存的優(yōu)先級;
- test: 緩存組的規(guī)則,表示符合條件的的放入當前緩存組,值可以是
function、boolean、string、RegExp,默認為空; - reuseExistingChunk: 表示可以使用已經(jīng)存在的塊,即如果滿足條件的塊已經(jīng)存在就使用已有的,不再創(chuàng)建一個新的塊。
1. 基本使用
首先,在新版本的webpack會默認對代碼進行拆分,拆分的規(guī)則是:
- 模塊被重復引用或者來自
node_modules中的模塊 - 在壓縮前最小為30kb
- 在按需加載時,請求數(shù)量小于等于5
- 在初始化加載時,請求數(shù)量小于等于3
小于30kb的模塊不值得再單獨發(fā)送一次請求,在很小的模塊的前提下,相比與多次打包,減少請求次數(shù)成本要低。
當然也可以不使用默認的配置,比如這樣:
new webpack.optimize.SplitChunksPlugin({
chunks: "all",
minSize: 20000,
minChunks: 1,
maxAsyncRequests: 5,
maxInitialRequests: 3,
name: true
)}
上面的代碼就表示,在所有代碼中,引用模塊大小最小為20kb,引用次數(shù)最少為1次,按需加載最大請求次數(shù)為5,初始化加載最大請求次數(shù)為3的所有模塊就行拆分到一個單獨的代碼塊中,name表示代碼的名字,設置為true則表示根據(jù)模塊和緩存組秘鑰自動生成。
2. 使用緩存組(Cache Groups)
如果想繼續(xù)細分代碼,可以使用緩存組(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
}
}
之后就隨心所欲,可以根據(jù)具體的需求,創(chuàng)建多個緩存組:
cacheGroups: {
a: {
// ...
},
b: {
// ...
}
// ...
}
寫在后面
webpack更新已經(jīng)過了很多天了,最近算是把更新的基本都過了一遍,在此記錄以便日后查看,理解有問題的地方還請不吝賜教。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
快速掌握WordPress中加載JavaScript腳本的方法
這篇文章主要介紹了快速掌握WordPress中加載JavaScript腳本的方法,以及響應的CSS樣式加載方法的簡介,需要的朋友可以參考下2015-12-12
JavaScript 以對象為索引的關聯(lián)數(shù)組
我們常說JavaScript原生支持json,因為我們可以認為json就是對JavaScript的Object對象的靈活應用。2010-05-05
獲取本機IP地址的實例(JavaScript / Node.js)
下面小編就為大家分享一篇使用JavaScript和Node.js獲取本機IP地址的實例,具有很好的參考價值,希望對大家有所幫助2017-11-11

