webpack5的踩坑记


前言

提示:升级webpack5之后的奇奇怪怪的问题

一、webpack-dev-server启动失败?

Error: Cannot find module ‘webpack-cli/bin/config-yargs’
原因:从 wepack4.x/webpack-cli 3.x 的搭配升级到了 webpack5.x/webpack-cli 4.x
4/3启动命令为:‘webpack-dev-server’
5/4版本webapck-cli目录做了修改,因此会报错,启动命令修改为‘webpack serve’ 即可

二、与 browserslist 冲突导致热更新失效

webpack-dev-server内部配了websocket, 可启动后浏览器并未见websocket服务,因此也未有热更新效果。

原因:在 package.json 里面写了 browserslist,与 browserslist 冲突导致热更新失效

方法一、删除 package.json 里的 browserslist(如果package.json 里面写了 browserslist)
方法二、在 webpack 配置中设置 target 字段,来在开发阶段使得 browserslist 失效(如果package.json 里面写了 browserslist):

webpack.config.js

module.exports = {
  target: process.env.NODE_ENV === "development" ? "web" : "browserslist", // 添加这一句
};

方法三、在 webpack 配置中直接设置
在 webpack 配置中直接设置:

module.exports = {
  target: "web", // 添加这一句
};

三、output.clean

5.20.0+
5.20以下版本清除dist文件内容一般使用插件 clean-webpack-plugin, 5.20版本以后output新增特性clean,用于清除dist文件

module.exports = {
  //...
  output: {
    clean: true, // Clean the output directory before emit.
  },
};
module.exports = {
  //...
  output: {
    clean: {
      dry: true, // Log the assets that should be removed instead of deleting them.
    },
  },
};
module.exports = {
  //...
  output: {
    clean: {
      keep: /ignored\/dir\//, // Keep these assets under 'ignored/dir'.
    },
  },
};

// or

module.exports = {
  //...
  output: {
    clean: {
      keep(asset) {
        return asset.includes('ignored/dir');
      },
    },
  },
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值