收集:关于升级到webpack5以及module、plugins的变动

文章详细列举了Webpack在不同版本间的若干重大变更,包括vue-loader的引入方式变化,less-loader的选项调整,HashedModuleIdsPlugin的更新,CommonsChunkPlugin的替换,CopyWebpackPlugin配置的改变以及optimization设置的升级。这些变更反映了Webpack向更优化、更简洁的配置方向发展。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

const VueLoaderPlugin = require('vue-loader/lib/plugin');

Cannot find module 'vue-loader/lib/plugin'

从16.0.0版本开始引用这种方法会报错,因为已经放弃了上述的引入方式,改以解构引入方式引入VueLoaderPlugin

const { VueLoaderPlugin } = require('vue-loader')

less-loader的版本不同,配置不同。


V6.0.0之前
options: {
javascriptEnabled: true
}
V6.0.0之后
options: {
lessOptions: {
javascriptEnabled: true
}
}

const webpack = require('webpack')

new webpack.HashedModuleIdsPlugin() 变为new webpack.ids.HashedModuleIdsPlugin()

CommonsChunkPlugin已在4的时候去除,改用optimization.splitChunks 和 optimization.runtimeChunk

const CopyWebpackPlugin = require("copy-webpack-plugin")

CopyWebpackPlugin的选项配置改变了

举例:从

new CopyWebpackPlugin([
      {
        from: "./doc",//源路径
        to: "./doc",//目标路径
        ignore: ['.*']
      }
    ])

变为

    new CopyWebpackPlugin({
      patterns: [
        {
            from: "./doc",//源路径
            to: "./doc",//目标路径
        },
            globOptions: {
                 ignore: ['.*']
            }
        ]
    })

官网提供:从 v4 升级到 v5 | webpack 中文文档

以下的配置项,请升级至最新的版本:

  • optimization.hashedModuleIds: true → optimization.moduleIds: 'hashed'
  • optimization.namedChunks: true → optimization.chunkIds: 'named'
  • optimization.namedModules: true → optimization.moduleIds: 'named'
  • NamedModulesPlugin → optimization.moduleIds: 'named'
  • NamedChunksPlugin → optimization.chunkIds: 'named'
  • HashedModuleIdsPlugin → optimization.moduleIds: 'hashed'
  • optimization.noEmitOnErrors: false → optimization.emitOnErrors: true
  • optimization.occurrenceOrder: true → optimization: { chunkIds: 'total-size', moduleIds: 'size' }
  • optimization.splitChunks.cacheGroups.vendors → optimization.splitChunks.cacheGroups.defaultVendors
  • optimization.splitChunks.cacheGroups.test(module, chunks) → optimization.splitChunks.cacheGroups.test(module, { chunkGraph, moduleGraph })
  • Compilation.entries → Compilation.entryDependencies
  • serve → serve 已被移除,推荐使用 DevServer
  • Rule.query (从 v3 开始被移除) → Rule.options/UseEntry.options
  • Rule.loaders → Rule.use

例子:

optimization: {

    moduleIds: 'named' // webpack5 采用此方式代替 NamedModulesPlugin

  },

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值