鍍金池/ 問答/HTML/ webpack里的optimization.splitChunks配置commo

webpack里的optimization.splitChunks配置commons和vendor是什么意思?

最近在學(xué)習(xí)webpack4的過程中,遇到問題,就是關(guān)于optimization.splitChunks,官網(wǎng)上說這是用于分包的,將重復(fù)引入的模塊打包到一個(gè)js里面,防止重復(fù)打包,這個(gè)我可以理解,但是關(guān)于具體的配置,我不是很懂,求大神賜教,以下是代碼:

optimization: {
        splitChunks: {
            cacheGroups: {
                commons: {
                    name: "commons",
                    chunks: "initial",
                    minChunks: 2
                },
                vendor: { 
                    chunks: "all",
                    test: /[\\/]node_modules[\\/]/,
                    name: "vendor",
                    minChunks: 1,
                    maxInitialRequests: 5,
                    minSize: 0,
                    priority: 100
                }
            }
        }
    }

這是我自己摸索的配置,然后并沒有如我想的那樣打包出2個(gè)js,我想問,commons和vendor各是什么意思,各在什么情況下使用,各項(xiàng)配置是什么意思,我這么寫,為何只打包出了一個(gè)js(vendor),commons呢,如果name不設(shè)置,那么生成的文件名是什么,還有,我發(fā)現(xiàn)打包出來的vendor.js特別大,是正常的嗎?
求大神不吝賜教,萬分感謝!

回答
編輯回答
祈歡

commons 一般是是個(gè)人定義的,vendor 是導(dǎo)入的 npm 包(從test中可以看出),
commons 用于個(gè)人定義的模塊被重復(fù)引用,vendor 用于npm引入的包被重復(fù)引用了,
各項(xiàng)配置不多說了,
只打包出一個(gè)js是因?yàn)閏ommons 少了一個(gè)配置項(xiàng) minSize: 0; 該項(xiàng)必須有,因?yàn)閣ebpack默認(rèn)值是30k,很明顯我打包的commons 不足30k,故必須指明其最小體積,
如果那么不設(shè)置name,生產(chǎn)的文件名是引入的bundle加上自動(dòng)命名連接符(automaticNameDelimiter: '~'),
因?yàn)関endor 是導(dǎo)入的 npm 包合并文件,故較大屬正常,但因?yàn)閹缀醪蛔?,故可以交給客戶端緩存

2017年1月19日 03:09
編輯回答
悶騷型

這兩個(gè)在這里都是 group 的名字,一般來說
commons 是你手寫的
vendor 是導(dǎo)入的 npm 包
只打包出一個(gè)可能是因?yàn)?chunks: "all" 覆蓋了上面的
打包出來特別大也沒問題,因?yàn)?vendor 會(huì)緩存在客戶端,第一次加載的時(shí)候流量消耗會(huì)比較多

參考 https://webpack.js.org/plugin...

2017年2月10日 00:02