概要内容
- 升级webpack相关插件
- loader配置调整
- loader-utils去除,采用webpack5内置接口
- 总结
1. 升级插件
-
webpack 和 webpack-cli
yarn add webpack@latest webpack-cli@latest -
升级插件 和 loader
yarn add html-webpack-plugin@latest mini-css-extract-plugin@latest css-loader@latest less-loader@latest sass-loader@latest svg-sprite-loader@latest
2. 配置调整
1. loader配置调整
-
由于webpack5 内置了资源模块,所以可以直接移除掉一下插件
yarn remove fileloader url-loader -
采用新配置替换掉原来的位置

2. loader-utils去除,采用webpack5内置接口
-
移除loader-utils
yarn remove loader-utils -
替换接口

3. 关闭@babel/preset-env中内置的pollyfill,使用core-js 3.x
-
关闭pollyfill

-
使用core-js

3. 遇到问题
1. Buffer is not defined

2. 样式丢失问题
-
现象:

此时出现一种无力感,猜想是loader问题,但是整个项目内容太多,很不好排查问题,所以想到一种解决办法,就是重新搞一个感觉的项目来测试,看看到底是哪个loader出了问题,经过艰苦的一轮测试后,发现是vue-loader问题,更新到15.x的版本就可以了,原因:16.x+ 是针对vue3 代码位置
3. 无法打包问题
-
效果:

这错真是报的一点头绪都没有,看下package.json打包命令
"scripts": { "build": "cross-env node build/build.prod.js ENV_TYPE=1 platform=pc", }最值得怀疑的就是cross-env 是不是版本不匹配,去github 看下文档

查看本地环境node: v14.14.0 , cross-env: ^5.2.0 , 走更新cross-env 版本,等更新完后npm run build ,仍然报上面相同的错误。
看到错误与npm有关,灵机一动:我直接最直接执行命令,webpack --config build/webpack.prod.conf.js,看看能否获取到更多错误信息

提示:devtools 配置已调整,请查看devtool 文档

直接devtool设置为false,添加SourceMapDevToolPlugin,再次npm run build 打包成功~~~

总结
- 复杂问题拆成简单问题,才能更快的解决问题(比如:上面碰到的loader问题、npm打包问题,都是把复杂问题化成简单问题,然后获取更多信息后解决掉最后的复杂问题)
参考文献
- 从 v4 升级到 v5
- Uncaught ReferenceError: Buffer is not defined
- babeljs.io/docs/en/bab…
- webpack.js.org/api/loaders…
- webpack.js.org/configurati…
- github.com/vuejs/vue-l…
以上:如发现有问题,欢迎留言指出,我及时更正