webpack3.0升级4.0的方法步骤
作者:_kangzai 发布时间:2024-10-30 02:01:09
1.webpack 3.11升级4.26
为了提升打包效率,在webpack3.11基础之上做了升级,webpack4.0发布以来,零配置的webpack对项目本身提供的“打包”和“压缩”功能已经做了优化,如果在项目开始使用4.0而不用vue-cli的默认配置,遇到的问题或许能少一些。
2. 安装/升级依赖
这些依赖有的是在build过程中发现依赖有新的替换或者报错,逐步替换的,如果想遇到多个坑,可以先把webpack、webpack-cli升级到对应版本
devDependencies:
"extract-text-webpack-plugin": "^4.0.0-beta.0"
"html-webpack-plugin": "^4.0.0-beta.14"
"mini-css-extract-plugin": "^0.9.0" (旧的optimize-css-assets-webpack不支持了)
"preload-webpack-plugin": "^3.0.0-beta.4"
"script-ext-html-webpack-plugin": "^2.1.3"
"vue-loader": "^15.3.0"
"webpack": "^4.26.1"
"webpack-cli": "^3.1.2"
"webpack-dev-server": "^3.2.1"
"script-ext-html-webpack-plugin": "^2.1.3"
3. 遇到的问题
升级webpack后,build报错:ERROR in ./src/App.vue
Module Error (from ./node_modules/vue-loader/lib/index.js
解决:升级vue-loader至15.3.0,
webpack.base.conf.js添加
const {VueLoaderPlugin} = require('vue-loader')
module.exports中添加
plugins:[new VueLoaderPlugin()]
修改配置文件 webpack.prod.conf.js:
webpack.optimize.CommonsChunkPlugin has been removed, please use config.optimization.splitChunks instead.
解决:
webpack.prod.conf.js webpackConfig配置:
optimization: {
noEmitOnErrors: true,
concatenateModules: true,
splitChunks: {
chunks: 'all',
name: 'common',
},
runtimeChunk: {
name: 'runtime'
}
}
webpack.prod.conf.js webpackConfig配置:
optimization:{
namedModules: true
},
Plugin could not be registered at ‘html-webpack-plugin-before-html-processing'. Hook was not found.
解决:
npm i preload-webpack-plugin@next -D
Tapable.plugin is deprecated. Use new API on .hooks instead
问题:extract-text-webpack-plugin兼容问题 ,功能:extract css into its own file
解决: 卸载extract-text-webpack-plugin,安装mini-css-extract-plugin
new MiniCssExtractPlugin({
filename: utils.assetsPath('css/[name].[contenthash].css'),
allChunks: false,
}),
build出错:ERROR in TypeError: Cannot read property ‘hash' of undefined
解决:
去掉这段
//打包计时
const SpeedMeasurePlugin = require("speed-measure-webpack-plugin");
const smp = new SpeedMeasurePlugin();
WARNING in configuration
The ‘mode' option has not been set, webpack will fallback to ‘production' for this value. Set ‘mode' option to ‘development' or ‘production' to enable defaults for each environment.
You can also set it to ‘none' to disable any default behavior. Learn more: https://webpack.js.org/concepts/mode/
解决:webpackConfig添加 mode: ‘production'
Tapable.plugin is deprecated. Use new API on .hooks instead
解决:
npm i --save-dev extract-text-webpack-plugin@next
会下载到 extract-text-webpack-plugin@4.0.0-beta
Error: webpack.optimize.CommonsChunkPlugin has been removed, please use config.o ptimization…
解决:
去掉 webpack.optimize.CommonsChunkPlugin相关配置
webpackConfig中与plugins的同级添加
optimization: {
splitChunks: {
cacheGroups: {
commons: {
name: "commons",
chunks: "initial",
minChunks: 2
}
}
}
},
Unhandled rejection Error: “dependency” is not a valid chunk sort mode
new HtmlWebpackPlugin({
filename: config.build.index,
template: 'index.html',
inject: true,
minify: {
removeComments: true,
collapseWhitespace: true,
removeAttributeQuotes: true
},
// necessary to consistently work with multiple chunks via CommonsChunkPlugin
chunksSortMode: 'dependency'
}),
解决:chunksSortMode改为auto或者注释
至此:npm run build 正常
接下来调npm run dev,直接运行成功
4. 总结
开启cache的情况下,原来打包时间22s左右,现在build最快8s左右
升级思路:
卸载webpack旧版本、安装新版本webpack, webpack-cli
遇到loader、plugin报错,升级loader、plugin,有的在4.0不支持,需要换成新的
卸载 ExtractTextPlugin、删除对应配置,改用 mini-css-extract-plugin
配置环境mode
其它wenpack3.0优化配置兼容处理
来源:https://blog.csdn.net/z2516305651/article/details/105181029


猜你喜欢
- 本文实例讲述了Python实现链表反转的方法。分享给大家供大家参考,具体如下:Python实现链表反转链表反转(while迭代实现):链表的
- 代码如下: document.getElementById("btnConnect").value = "连接
- 5月20日,微软正式提供了Windows XP下可用的雅黑字体下载,雅黑字体是一款近乎完美的字体,解决了宋体小文字无法辩认的问
- 本文实例为大家分享了vue实现全屏滚动效果(的具体代码,供大家参考,具体内容如下是什么网页的一个页面占据一屏的宽高,多个页面上下或者左右拼接
- 1.Fork出来的Git仓库同步代码背景:有的时候从原仓库fork出了一个新仓库,这个新仓库做了自己的修改。可是原仓库也进行了更新,比如修复
- 第一部分:判断两张图片是否相同要查找重复的图片,必然绕不开判断两张图片是否相同。判断两张图片简单呀!图片可以看成数组,比较两个数组是否相等不
- 最近一个项目中遇到ASP对FoxPro库表(*.DBF)的操作问题。现实中确有许多应用软件使
- 排序排序是指以特定格式排列数据。排序算法指定以特定顺序排列数据的方式。最常见的顺序是数字或字典顺序。在 Numpy 中,我们可以使用库中提供
- 背景在python工程完成开发以后需要编译成可执行文件,如此一来生产环境和开发环境隔离开来便于用户使用(可独立使用,无需配置python开发
- 部署apache服务的步骤:准备环境:关闭防火墙 :service iptables stop设置开机关闭防火墙:chkconfig ipt
- 本文实例讲述了Python单元和文档测试。分享给大家供大家参考,具体如下:单元和文档测试1、单元测试单元测试就是用来对一个模块、一个函数或者
- 前言不要在用手敲生成Excel数据报表了,用Python自动生成Excel数据报表!废话不多说让我们愉快地开始吧~开发工具Python版本:
- 一、Monkey测试简介Monkey测试是Android平台自动化测试的一种手段,通过Monkey程序模拟用户触摸屏幕、滑动Trackbal
- PHP Session 变量当运行一个应用程序时,你会打开它,做些更改,然后关闭它。这很像一次会话。计算机清楚你是谁。它知道你何时启动应用程
- 数据归一化是深度学习数据预处理中非常关键的步骤,可以起到统一量纲,防止小数据被吞噬的作用。一:归一化的概念归一化就是把所有数据都转化成[0,
- 最近一直在做订单类的项目,使用了事务。我们的数据库选用的是MySql,存储引擎选用innoDB,innoDB对事务有着良好的支持。这篇文章我
- Vue 能监听数组的情况Vue 监听数组和对象的变化(vue2.x)vue 实际上可以监听数组变化,比如:直接 = 赋值data () {
- 1.思路在网上查找了半天,基本都是提取word中文字的,没有找到可以把word中的图片提取出来的方法。一个巧合的情况下,发现将word的后缀
- 爬虫思路初步尝试我先查看了network,并没有发现有可用的API;然后又用bs4去分析英雄列表页,但是请求到html里面,并没有英雄列表,
- window.onload = function(){ var gaga = document.getElementById( "