webpack提取页面公共资源

公共脚本分离

思路:将react、react-dom基础包通过cdn引入,不打入bundle中

方法一:SplitChunksPlugin(webpack4内置插件)官网地址

chunks参数说明
.async 异步引入的库进行分离(默认)
.initial 同步引入的库进行分离
.all 所有引入的库进行分离(推荐)

//三方库分离
 optimization:{
        splitChunks: {
            cacheGroups: {
                commons: {
                    test: /(react|react-dom)/,
                    name: "vendors",
                    chunks: "all"
                }
            }
        }
    }
//公共脚本分离
 optimization:{
        splitChunks: {
            minSize:0,
            cacheGroups: {
                commons:{
                    name:'commons',
                    chunks:"all",
                    minChunks:2 //至少引用2次,才打包出commons文件
                }
            }
        }
    }

引入方法

new HTMLWebpackPlugin({
  chunks:["vendors",pageName]
})

打包结果


image.png
方法二:html-webpack-externals-plugin
cnpm i html-webpack-externals-plugin -D

webpack.prod.js

new HtmlWebpackExternalsPlugin({
            externals: [
              {
                module: 'react',
                entry: 'https://unpkg.com/react@16/umd/react.production.min.js',
                global: 'React',
              },
              {
                module: 'react-dom',
                entry: 'https://unpkg.com/react-dom@16/umd/react-dom.production.min.js',
                global: 'ReactDOM',
              },
            ],
          })

index.html

<body>
    <div id="root"></div>
    <script src="https://unpkg.com/react@16/umd/react.production.min.js"></script>
    <script src="https://unpkg.com/react-dom@16/umd/react-dom.production.min.js"></script>
</body>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容