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 相关文章推荐
flexigrid 参数说明
Nov 23 Javascript
跨域请求之jQuery的ajax jsonp的使用解惑
Oct 09 Javascript
Javascript异步编程的4种方法让你写出更出色的程序
Jan 17 Javascript
JavaScript之数组(Array)详解
Apr 01 Javascript
javascript格式化日期时间方法汇总
Jun 19 Javascript
javascript模拟C#格式化字符串
Aug 26 Javascript
AngularJS中监视Scope变量以及外部调用Scope方法
Jan 23 Javascript
用AngularJS的指令实现tabs切换效果
Aug 31 Javascript
Knockout结合Bootstrap创建动态UI实现产品列表管理
Sep 14 Javascript
使用mock.js随机数据和使用express输出json接口的实现方法
Jan 07 Javascript
对angularjs框架下controller间的传值方法详解
Oct 08 Javascript
Js on及addEventListener原理用法区别解析
Jul 11 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 curl常见错误:SSL错误、bool(false)
2011/12/28 PHP
探讨:使用XMLSerialize 序列化与反序列化
2013/06/08 PHP
PHP面向对象程序设计中的self、static、parent关键字用法分析
2019/08/14 PHP
js 鼠标点击事件及其它捕获
2009/06/04 Javascript
javascript中创建对象的三种常用方法
2010/12/30 Javascript
JavaScript基础知识学习笔记
2014/12/02 Javascript
jQuery中hasClass()方法用法实例
2015/01/06 Javascript
AspNet中使用JQuery boxy插件的确认框
2015/05/20 Javascript
javascript中setInterval的用法
2015/07/19 Javascript
什么是JavaScript注入攻击?
2016/09/14 Javascript
原生js实现回复评论功能
2017/01/18 Javascript
Spring shiro + bootstrap + jquery.validate 实现登录、注册功能
2017/06/02 jQuery
微信小程序开发之IOS和Android兼容的问题
2017/09/26 Javascript
让 babel webpack vue 配置文件支持智能提示的方法
2019/06/22 Javascript
谈谈JavaScript令人迷惑的==与+
2020/08/31 Javascript
使用python加密自己的密码
2015/08/04 Python
Python探索之爬取电商售卖信息代码示例
2017/10/27 Python
python输入整条数据分割存入数组的方法
2018/11/13 Python
Python一个简单的通信程序(客户端 服务器)
2019/03/06 Python
pytorch制作自己的LMDB数据操作示例
2019/12/18 Python
Keras 在fit_generator训练方式中加入图像random_crop操作
2020/07/03 Python
澳大利亚领先的宠物用品商店:VetSupply
2017/09/08 全球购物
Lampenwelt德国:欧洲领先的灯具和照明在线商店
2018/08/05 全球购物
瑞典最大的儿童用品网上商店:pinkorblue.se
2021/03/09 全球购物
白酒市场开发计划书
2014/01/09 职场文书
初一英语教学反思
2014/01/11 职场文书
金融管理应届生求职信
2014/02/20 职场文书
2014年教师节座谈会发言稿
2014/09/10 职场文书
试用期转正后的自我评价
2014/09/21 职场文书
玄武湖导游词
2015/02/05 职场文书
当幸福来敲门英文观后感
2015/06/01 职场文书
幸福来敲门观后感
2015/06/04 职场文书
大学生暑期实践报告
2015/07/13 职场文书
迎客户欢迎词三篇
2019/09/27 职场文书
详解前端任务构建利器Gulp.js使用指南
2021/04/30 Javascript
Python OpenCV 彩色与灰度图像的转换实现
2021/06/05 Python