迁移到webpack4:从webpack.optimize.CommonsChunkPlugin到config.optimization.splitChunk,以及有个搜出来的中文解决办法是错的

今天在对着webpack中文指南一点点敲demo,在代码分离这一节遇到了一个报错:

webpack4 Error: webpack.optimize.CommonsChunkPlugin has been removed, please use config.optimization.splitChunks instead

哦,原来是原来的插件不能用了,这个中文指南,标的是webpack4.7.0,结果这块都没更新啊。。。于是必应搜了一下,第一个出来的是这个

webpack4 Error: webpack.optimize.CommonsChunkPlugin has been removed, please use config.optimization.splitChunks instead 的解决方法

照着在webpack.config.js改了一下代码:

  module.exports = {
    plugins: [
-     new webpack.optimize.CommonsChunkPlugin({
-       name: 'common' // 指定公共 bundle 的名称。
-     })
    ],

+   optimization: {
+     splitChunks: {
+       name: 'common'
+     }
+   },

倒是不报错了,但仔细检查了一下,发现结果是:

//app.bundle.js 和 another.bundle.js 是共享 lodash模块的
                Asset       Size  Chunks             Chunk Names
    another.bundle.js   70.1 KiB       0  [emitted]  another
        app.bundle.js   70.2 KiB       1  [emitted]  app
another.bundle.js.map    668 KiB       0  [emitted]  another
    app.bundle.js.map    668 KiB       1  [emitted]  app
           index.html  253 bytes          [emitted]  

app.bundle.js 和 another.bundle.js 的大小都在70kib左右(1kib = 1,024Byte),相差无几且都大得不对劲,而且common.js根本没有生出来啊。。。这绝壁是有问题吧!!!

返回去老老实实看官方文档吧。。。

果然,是要这么配滴:

//optimization与entry/plugins同级
optimization: {
        splitChunks: {
            cacheGroups: {
                commons: {
                    name: "commons",
                    chunks: "initial",
                    minChunks: 2
                }
            }
        }
    },

稍微解释一下含义

  • cacheGroups is an object where keys are the cache group names. All options from the ones listed above are possible: chunks, minSize, minChunks, maxAsyncRequests, maxInitialRequests, name. 可以自己设置一组一组的cache group来配对应的共享模块
  • commons里面的name就是生成的共享模块bundle的名字
  • With the chunks option the selected chunks can be configured.
    chunks 有三个可选值,”initial”, “async” 和 “all”. 分别对应优化时只选择初始的chunks,所需要的chunks 还是所有chunks 。
  • minChunks 是split前,有共享模块的chunks的最小数目 ,默认值是1, 但我看示例里的代码在default里把它重写成2了,从常理上讲,minChunks = 2 应该是一个比较合理的选择吧。

出来的结果是:

                Asset       Size  Chunks             Chunk Names
    commons.bundle.js   69.5 KiB       0  [emitted]  commons
    another.bundle.js   1.21 KiB       1  [emitted]  another
        app.bundle.js   1.26 KiB       2  [emitted]  app
commons.bundle.js.map    664 KiB       0  [emitted]  commons
another.bundle.js.map    6.9 KiB       1  [emitted]  another
    app.bundle.js.map   7.31 KiB       2  [emitted]  app
           index.html  317 bytes          [emitted]  

很明显这才是对的嘛~

对了,那个回答在某个叫skip的社区上,已经有4964浏览量了。。。。不得不觉得有点误人子弟啊。。。

根据引用\[1\]和引用\[2\]的内容,你在使用webpack的时候遇到了一个误,误信息是"Error: webpack.optimize.UglifyJsPlugin has been removed, please use config.optimization.minimize instead." 这是因为在最新的webpack版本中,webpack.optimize.UglifyJsPlugin已经被移除了,取而代之的是config.optimization.minimize。你需要在配置文件中引入uglifyjs-webpack-plugin,并将其添加到optimization.minimizer中,如引用\[2\]所示。这样就可以解决这个误了。 至于你的问题是关于new webpack.optimize.UglifyJsPlugin的使用,根据最新的webpack版本,你应该使用config.optimization.minimize来进行代码压缩和优化,而不是使用UglifyJsPlugin。你可以按照引用\[2\]中的配置示例来修改你的webpack配置文件,将UglifyJsPlugin替换为config.optimization.minimizer。这样就可以正确地进行项目打包了。 #### 引用[.reference_title] - *1* *2* [webpack.optimize.UglifyJsPlugin has been removed, please use config.optimization.minimize instead](https://blog.csdn.net/weixin_37861326/article/details/107067217)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [webpack.optimize.CommonsChunkPlugin has been removed,please use config.optimization.splitChunks...](https://blog.csdn.net/beijikaiqiting/article/details/130506403)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 26
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值