webpack3.0升级4.0的方法步骤


Posted in Javascript onApril 02, 2020

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左右

升级思路:

  1. 卸载webpack旧版本、安装新版本webpack, webpack-cli
  2. 遇到loader、plugin报错,升级loader、plugin,有的在4.0不支持,需要换成新的
  3. 卸载 ExtractTextPlugin、删除对应配置,改用 mini-css-extract-plugin
  4. 配置环境mode
  5. 其它wenpack3.0优化配置兼容处理

到此这篇关于webpack3.0升级4.0的方法步骤的文章就介绍到这了,更多相关webpack3.0升级4.0内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
百度Popup.js弹出框进化版 拖拽小框架发布 兼容IE6/7/8,Firefox,Chrome
Apr 13 Javascript
JavaScript游戏之是男人就下100层代码打包
Nov 08 Javascript
jquery选择符快速提取web表单数据示例
Mar 27 Javascript
bootstrap3 dialog 更强大、更灵活的模态框
Apr 20 Javascript
详解vue-meta如何让你更优雅的管理头部标签
Jan 18 Javascript
Koa2微信公众号开发之本地开发调试环境搭建
May 16 Javascript
微信小程序wx.uploadfile 本地文件转base64的实现代码
Jun 28 Javascript
基于vue实现移动端圆形旋钮插件效果
Nov 28 Javascript
vue favicon设置以及动态修改favicon的方法
Dec 21 Javascript
微信小程序转发事件实现解析
Oct 22 Javascript
vue 动态给每个页面添加title、关键词和描述的方法
Aug 28 Javascript
vue 虚拟DOM的原理
Oct 03 Javascript
Javascript模块化机制实现原理详解
Apr 02 #Javascript
sharp.js安装过程中遇到的问题总结
Apr 02 #Javascript
viewer.js一个强大的基于jQuery的图像查看插件(支持旋转、缩放)
Apr 01 #jQuery
Selenium执行Javascript脚本参数及返回值过程详解
Apr 01 #Javascript
vue+render+jsx实现可编辑动态多级表头table的实例代码
Apr 01 #Javascript
js实现数据导出为EXCEL(支持大量数据导出)
Mar 31 #Javascript
Vue路由守卫及页面登录权限控制的设置方法(两种)
Mar 31 #Javascript
You might like
PHP中用header图片地址 简单隐藏图片源地址
2008/04/09 PHP
解析PHPExcel使用的常用说明以及把PHPExcel整合进CI框架的介绍
2013/06/24 PHP
Chrome Web App开发小结
2014/09/04 PHP
Yii2实现同时搜索多个字段的方法
2016/08/10 PHP
Laravel框架实现的rbac权限管理操作示例
2019/01/16 PHP
URL编码转换,escape() encodeURI() encodeURIComponent()
2006/12/27 Javascript
setTimeout 不断吐食CPU的问题分析
2009/04/01 Javascript
通过javascript获取iframe里的值示例代码
2013/06/24 Javascript
JavaScript中的原型和继承详解(图文)
2014/07/18 Javascript
js中style.display=""无效的解决方法
2014/10/30 Javascript
浅谈window对象的scrollBy()方法
2015/07/15 Javascript
jQuery+css实现非常漂亮的水平导航菜单效果
2016/07/27 Javascript
AngularJS入门教程之Scope(作用域)
2016/07/27 Javascript
js实现倒计时及时间对象
2016/11/15 Javascript
jQuery模拟下拉框选择对应菜单的内容
2017/03/07 Javascript
编写React组件项目实践分析
2018/03/04 Javascript
浅谈vue后台管理系统权限控制思考与实践
2018/12/19 Javascript
vue cli安装使用less的教程详解
2019/07/12 Javascript
jquery实现进度条状态展示
2020/03/26 jQuery
electron 如何将任意资源打包的方法步骤
2020/04/16 Javascript
[02:53]DOTA2英雄基础教程 山岭巨人小小
2013/12/09 DOTA
[01:31:02]TNC vs VG 2019国际邀请赛淘汰赛 胜者组赛BO3 第一场
2019/08/22 DOTA
Python日期操作学习笔记
2008/10/07 Python
在Python的Django框架的视图中使用Session的方法
2015/07/23 Python
Python cookbook(数据结构与算法)找出序列中出现次数最多的元素算法示例
2018/03/15 Python
Python使用matplotlib实现基础绘图功能示例
2018/07/03 Python
Python判断字符串是否为字母或者数字(浮点数)的多种方法
2018/08/03 Python
实现ECharts双Y轴左右刻度线一致的例子
2020/05/16 Python
Python基于unittest实现测试用例执行
2020/11/25 Python
关于多种方式完美解决Python pip命令下载第三方库的问题
2020/12/21 Python
哥伦比亚最大的网上商店:Linio哥伦比亚
2016/09/25 全球购物
美国环保婴儿用品公司:The Honest Company
2017/11/23 全球购物
美国顶级水上运动专业店:Marine Products
2018/04/15 全球购物
广州一家公司的.NET面试题
2016/06/11 面试题
超市重阳节活动方案
2014/02/10 职场文书
户外活动总结范文
2014/04/30 职场文书