记录升级Webpack5遇到的坑

1.eslint-loader改为eslint-webpack-plugin

plugins: [
      new ESLintPlugin({
        fix: true, // 启用ESLint自动修复功能
        extensions: ['js', 'jsx'],
        context: resolve('src'), // 文件根目录
        exclude: '/node_modules/',// 指定要排除的文件/目录
        cache: true //缓存
      })
    ]

2.内置file-loader和url-loader

{
              test: /\.(eot|svg|ttf|woff|woff2?)$/,
              type: 'asset/resource',
              generator: {
                filename: 'static/fonts/[hash][ext][query]'
              }
            },
            {
              test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
              type: 'asset/resource',
              generator: {
                filename: 'static/images/[hash][ext][query]'
              }
            }

3.本地启用devserver命令更改,webpack-dev-server改为webpack serve

"start":  "webpack serve --config build/webpack.dev.js --progress",

4. 不支持babel-polyfill,改用@babel/runtime-corejs3和@babel/plugin-transform-runtime

5.图片路径问题

webpack5生产环境需要使用mini-css-extract-plugin的loader,升级后发现背景图片不显示(img标签正常),排查发现是打包后相对路径出现问题,修改publicPath解决

  • 修改前
{
     test: /\.(sa|sc|c)ss$/,
     use: [
         isEnvProduction ? MiniCssExtractPlugin.loader : 'style-loader',
         'css-loader',
         'postcss-loader',
         'sass-loader'
     ]
}
  • 修改后
const cssLoader = () => {
  const loader = devModel ? 'style-loader' : {
    loader: devModel ? 'style-loader' : MiniCssExtractPlugin.loader,
      options: {
        publicPath: '../'  
    }
  }
  
  return [
    loader,
    'css-loader',
    'postcss-loader',
    'sass-loader'
  ]
}
// rule
{
   test: /\.(sa|sc|c)ss$/,
   use: cssLoader()
},

6. 部分页面报错,文件引用出现问题(大坑)

排查后发现是用了旧的插件出现问题
new webpack.optimize.ModuleConcatenationPlugin()
删掉OK

7.optimize-css-assets-webpack-plugin替换为css-minimizer-webpack-plugin

optimization: {
    moduleIds: 'deterministic',
    minimizer: [
      new CssMinimizerPlugin({
        parallel: true // 开启多线程压缩
      }),
    ]
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前段时间接受了一个旧项目,也不算旧 ,项目一直在做,但是没有人去做依赖升级.一直使用老版本两三年.接手后总是莫名其...
    z_hboot阅读 989评论 0 1
  • 全局安装webpack 全局安装webpack会有个问题,就是当你有两个项目依赖于不同版本的webpack,就会有...
    説好的妹紙呢阅读 1,858评论 0 11
  • webpack4笔记 快速了解几个基本的概念 mode 模式 通过选择 development, producti...
    假装没昵称阅读 348评论 0 1
  • webpack都更新到4.17.x了,官网的文档有一部分还停留在4.x以下,因此写下这篇文章,以便后续遇到坑的时候...
    麦子_Peng阅读 413评论 0 0
  • webpack4大幅度减少配置成本。为了优化打包流程和打包效率,决定升级新版本,拥抱新技术 计划步骤: 从现有的一...
    treeQQ阅读 4,475评论 1 3