最近发现还是有听过人看这篇文章,所以再来更新一下。首先现在webpack4已经稳定,各个插件和loader基本上直接装都可以版本匹配,比如html-webpack-plugin,如果有不匹配的看peerDependencies提醒,会提示你需要安装新的版本。还有就是extract-text-webpack-plugin作者好像不想维护了,现在可以用mini-css-extract-plugin,webpack5据说会集成css打包,就不需要插件了

2018年2月25日,刚过完年webpack就给了一个加班红包。webpack4经过1个月的缓冲期,终于发布了正式版,那么抛给广大开发者的问题又来了,我是不是要升级了呢?本文就站在一个之前用webpack3开发项目,现在打算升级到4的角度上,来讲一讲需要升级的内容。

安装

首先你要重新安装以下的依赖包:

  1. webpack4
  2. webpack-cli(用来启动webpack)
  3. html-webpack-plugin还没有更新,会出现compilation.templatesPlugin is not a function的错误,目前需要npm i webpack-contrib/html-webpack-plugin -D安装,官方说法是因为作者这段时间没空更新,所以他们自己fork了一份改了,现在先用这种方式用着,等作者有空了再合并进去。
  4. 其他各种配件升级,dev-server升级到3,各种loader你们自己看着办,如果是新装的应该是已经支持了的,如果在编译过程中报can not find xxx的错误,说明xxx对应的loader可能需要升级了,因为webpack4去掉了this.options的支持
  5. 看一下有没有peerDependencies的提醒,有的话升级以下插件。目前来说我剩下一个ajv-keywords@3.1.0 requires a peer of ajv@^6.0.0 but none is installed. You must install peer dependencies yourself.的莫名其妙提醒,暂时没什么影响,也没查到解决方法,所以先放着,你们如果重新安装包可能就没这个错了。

以上这些就是安装包的工作,基本就差不多了。

配置

mode

webpack加了一个mode配置,只有两个值development | production,对不同的环境他会提供不同的一些默认配置,比如开发环境下面默认启用optimization.namedModules(原NamedModulesPlugin,现已弃用),而生产环境默认使用optimization.noEmitOnErrors(原NoEmitOnErrorsPlugin,现已弃用)。

不同模式下的默认配置如下:

  1. 生产环境默认开启了很多代码优化(minify,splite等)
  2. 开发时开启注视和验证,并且自动加上了eval devtool
  3. 生产环境不支持watching,开发环境优化了重新打包的速度
  4. 生产环境开启模块串联(原ModuleConcatenationPlugin),没用过不多说
  5. 自动设置process.env.NODE_ENV到不同环境,也就是不需要DefinePlugin来做这个了
  6. 如果你给mode设置为none,所有默认配置都去掉了

如果不加这个配置webpack会出现提醒,所以还是加上吧

CommonsChunkPlugin

相信大家如果听说过webpack4的更新,最大的感触应该就是去除了CommonsChunkPlugin,毕竟官方change log写的篇幅最多的就是这个

CommonsChunkPlugin删除之后,改成使用optimization.splitChunks进行模块划分,详细文档看这里

官方的说法是默认设置已经对大部分用户来说非常棒了,但是需要注意一个问题,默认配置只会对异步请求的模块进行提取拆分,如果要对entry进行拆分,需要设置optimization.splitChunks.chunks = 'all'。其他的内容大家就自己研究吧。

对应之前我们拆分runtime的情况,现在也有一个配置optimization.runtimeChunk,设置为true就会自动拆分runtime文件

UglifyJsPlugin

现在也不需要使用这个plugin了,只需要使用optimization.minimize为true就行,production mode下面自动为true

optimization.minimizer可以配置你自己的压缩程序

其他

还有很多是我们平时使用不太到的升级,更多的是一些性能上的优化和功能上的升级,附上官方change log,希望官方文档赶紧出来吧。

webpack4升级指北相关推荐

  1. 【限时免费】LiveVideoStack Meet | 北京:卷时代,多媒体人 生存指北

    如约而至,回归后的第一期LiveVideoStack Meet将于9月25日在北京举行,正如在"来,一起搞AV,LiveVideoStack Meet再启动"提到的,新LiveVi ...

  2. LiveVideoStack Meet | 北京:卷时代,多媒体人 生存指北

    如约而至,回归后的第一期LiveVideoStack Meet将于9月25日在北京举行,正如在"来,一起搞AV,LiveVideoStack Meet再启动"提到的,新LiveVi ...

  3. 狼叔直播 Reaction《学习指北:Node.js 2022 全解析》

    大家好,我是若川.持续组织了6个月源码共读活动,感兴趣的可以点此加我微信 ruochuan02 参与,每周大家一起学习200行左右的源码,共同进步.同时极力推荐订阅我写的<学习源码整体架构系列& ...

  4. 新司机的黑裙战斗机 篇二:入门—新司机的黑群晖指北——软件篇(上)

    原文网址:https://post.smzdm.com/p/alpkmoge/ 各位剁友好,我是身在长沙的一只小剁,因为ID的缘故长沙剁友赐雅号--姐夫 上一篇关于硬件配置和装机的晒单,引发了大量评论 ...

  5. 计算机学习入门指北——计科软工网络信安侧重图析、解读专业术语、岗位分类、未来规划

    申明:本博文偏技术向,主观性较强,其中部分理解必有偏差和误解,望指出改正! 计算机学习入门指北: 作为刚入学的计算机系学生,面对一片专业术语十分蒙.区块链?大数据?开源?数据库?嵌入式开发?前端后端? ...

  6. [施工中]Java阿里云服务器ECS建站操作不完全指北

    [施工中]Java阿里云服务器ECS建站操作不完全指北 ECS建站操作记录 前言 一 .Xshell6与Xftp6 1.1Xshell与Xftp的作用 1.2如何从官网下载xshell与xftp 1. ...

  7. VUE3/TS/TSX入门手册指北

    VUE3入门手册 vue3入门 首先 查看 官方文档:https://cn.vuejs.org/guide/quick-start.html 如果有vue2基础,速成课程:https://www.zh ...

  8. iOS开发者的Weex伪最佳实践指北

    本文来自简书,原文地址:http://www.jianshu.com/p/43adc80ab60b 引子 这篇文章是笔者近期关于Weex在iOS端的一些研究和实践心得,和大家一起分享分享,也算是对学习 ...

  9. Android 8.0适配指北

    本文已授权微信公众号:鸿洋(hongyangAndroid)原创首发. Android适配系列: Android 6.0 的动态权限管理 Android 7.0脱坑指南 Android 8.0适配指北 ...

最新文章

  1. GitHub 重磅开源!这个 AI 项目至少价值百万!!!
  2. 在windows10上搭建caffe
  3. 当不能用for等循环时,可以考虑递归
  4. 如何查看cplex的help文档_word查看技巧:如何快速找到文档的修改痕迹
  5. 慧林系统多服务器授权,慧林虚拟主机管理系统
  6. Linux自动注销登录的帐户
  7. 全文检索lucene6.1的检索方式
  8. MATLAB--求解矩阵方程
  9. ubuntu 安装 ftp server
  10. 最新免费可使用在线音乐网站+多解析源码
  11. Microsoft Internet Explorer浏览器包含最新版本的内置Adobe Flash Player的解决办法
  12. 什么服务器操作系统更好?四大流派有这些!
  13. 计算机网络小黑指北-单选题自测
  14. Oracle AutoVue 安装与配置说明
  15. keep-alive的用法和作用
  16. mailgun_用Mailgun邮寄出去!
  17. windo10系统哪个版本运行最快呢?
  18. 网页看视频没有声音怎么办
  19. excel中批量自动生成一个月内日期和时间
  20. Educational Codeforces Round 118 (Rated for Div. 2) C. Poisoned Dagger(二分或搜索)

热门文章

  1. PAT (Advanced Level) 1078. Hashing (25)
  2. 虚拟化--YESLAB DC Vphere5 上课PDF
  3. Java反射机制分析指南
  4. Linux下磁盘读写优化的分析
  5. C++中访问类的私有数据成员的第三种方法
  6. 【C++基础学习】C++中的引用
  7. 调剂女人身材的十种食物
  8. 分享6 个值得收藏的 Python 代码
  9. c++语言函数大全,C++函数
  10. 计算机基础知识_2020年河北省高职单招计算机基础知识和实践技能培训