本文主要是介绍webpack之提取页面公共资源(SplitChunksPlugin),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
利用SplitChunksPlugin进行公共脚本分离,Webpack4内置的,替代CommonsChunkPlugin插件。
chunks参数说明:
async:异步引入的哭进行分离(默认)
initial:同步引入的库进行分离
all:所有引入的库进行分离
minChunks:设置最小引入次数为2次
minSize:分离的包体积的大小
一、引入插件
npm i html-webpack-externals-plugin -D
二、打包公共资源
new HtmlWebpackExternalsPlugin({externals: [{module: 'react',entry: 'https://cdn.bootcss.com/react/16.2.0/umd/react.production.min.js',global: 'React',},{module: 'react-dom',entry: 'https://cdn.bootcss.com/react-dom/16.2.0/umd/react-dom.production.min.js',global: 'ReactDOM',}]})
optimization: {splitChunks: {cacheGroups: {commons: {test: /(react|react-dom)/,name: 'vendors',chunks: 'all'}}}},
此处作用是提取react和react-dom,公共部分,将他们打包入一个名为vendors的文件中
注意要在HtmlWebpackPlugin中的chunks数组中引入
htmlWebpackPlugins.push(new HtmlWebpackPlugin({template: path.join(__dirname, `src/${pageName}/index.html`),filename: `${pageName}.html`,chunks: ['vendors', 'common', pageName], // 注意此处inject: true,minify: {html5: true,collapseWhitespace: true,preserveLineBreaks: false,minifyCSS: true,minifyJS: true,removeComments: false}}));
三、提取公共文件并打包
optimization: {splitChunks: {minSize: 0,cacheGroups: {commons: {name: 'commons',chunks: 'all',minChunks: 2}}}}
次配置,文件大小最小为0,至少引用两次的文件,将打包入名为commons的文件中,此处和上面一样,都需要在HtmlWebpackPlugin中的chunks数组中引入。
这篇关于webpack之提取页面公共资源(SplitChunksPlugin)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!