webpack最新版本_webpack小结-开发环境构建优化

229e91d3744ae6ce3735b54c4ff9b1c9.png

刚刚对我们前端项目做了一顿分析优化操作,因为接手时每次构建要花两分钟左右的时间,实在忍受不了,只能动手了。通过这次优化,重新温习了下 webpack 的一些知识。接下来会关于 webpack 展开写几篇心得:

  • 构建分析
  • 开发环境构建优化
  • 生产环境构建优化
  • webpack 原理浅析
  • 如何实现一个简易版 webpack
  • 如何手写一个 loader 和 plugin

好了,进入主题,本篇主要是介绍开发环境构建优化(包含速度、体积),如何分析可以看我上一篇。

1. 版本升级

现在,我们已经可以安装最新的 webpack 5 了,不过 v5 还不是正式版本。目前 npm 官网上的最新版本仍然是 v4。由于不是本章重点,后面有机会会详细阐述,感兴趣的可以看下这篇文章了解下,最好能动手玩一玩。

建议更新到最新稳定版本,为什么呢?可以看下官网-构建性能

3cad431a51d824598c57cbfd16dceec9.png

所以别说 v3 了, webpack4.x 的速度要远大于 3.x, v4 的小版本也建议更新到最新稳定版。

另外 webpack 版本也会存在导致本地使用 node 高版本跑项目时,报出一些奇奇怪怪的错误。像我遇到过一次 webpack v4.6、node v12.16.0 就报错了。

ac45d2ee208b9f255d749713521977cf.png

009d338c1a9477097dc834392dda48bc.png

2. devtool

module

开发环境建议使用 eval-source-map, 这会减少你本地构建的时间。

为什么呢?可以看下官网介绍-devtool,这篇的中文是我负责翻译的,有觉得不合理的,欢迎留言。

21c96282d4454234a8441659c8d34286.png

3. resolve

建议配置 alias 和 extensions,同时项目中要使用到 alias,否则配置就毫无意义了。

module

可以看下

  • webpack-缩小范围
  • 官网-resolve

4. 避免不必要的 plugin 和优化任务

一些plugin比如压缩混淆在开发环境是没有意义的,所以需要写两份不同的配置文件,防止这些插件作用在开发环境。

另外需要防止不必要的优化,可以在开发环境把这些都关掉。

module

5. happypack

happypack

在使用 Webpack 对项目进行构建时,会对大量文件进行解析和处理。当文件数量变多之后,Webpack 构件速度就会变慢。由于运行在 Node.js 之上的 Webpack 是单线程模型的,所以 Webpack 需要处理的任务要一个一个进行操作。

而 Happypack 的作用就是将文件解析任务分解成多个子进程并发执行。子进程处理完任务后再将结果发送给主进程。所以可以大大提升 Webpack 的项目构件速度。

这里顺带提一下,在 loader 中最好加上 exclude 和 include 配置,会减少构建时间的。

var 

6. 使用 noParse

webpack 打包的时候,有时不需要解析某些模块的加载(这些模块并没有依赖,或者根本没有模块化),我们可以直接加上这个参数,直接跳过这种解析,像 jquery、lodash...

module

7. hard-source-webpack-plugin

hard-source-webpack-plugin

这是用于加载缓存,效果很强。

  • 第一次构建将花费正常的时间
  • 第二次构建将显着加快(大概提升90%的构建速度)。

webpack v5 实现了此功能,感兴趣的可以下载试试。

var 

8. 压缩 js, html, css 文件

要想优化构建后的体积,不断减少静态资源文件的大小,我们希望 webpack 帮助我们尽可能压缩文件的体积。对于 js 脚本文件而言,webpack4.0 在 mode 为 ‘production’ 时,默认会启动代码的压缩。除此之外,我们需要手动对 html 和 css 进行压缩。

针对html 的压缩,只需要对 html-webpack-plugin 进行相关配置。

module

针对 css 的压缩, webpack4.0 使用 optimize-css-assets-webpack-plugin 来压缩单独的 css 文件。

const 

9. 合并压缩图片

提升性能的一个重要的条件是降低 http 请求数,而应用中经常会有大大小小的图片需要处理,对应用中的小图标来说,css sprite 是首选,将各种图标集合成一张大的图片可以很好的减少网络请求数。而对于需要独立开的图片,且大小在合理范围内时,我们可以将图片转换成 base64 位编码,内嵌到css 中,同样可以减少请求。

处理图片资源时,webpack 提供了 file-loader 和url-loader 两个loaders供选择,file-loader 和url-loader 的作用,可以用来解析项目中图片文件的url引入问题。两者的区别在于,url-loader 可以将小于指定字节的文件转为 DataURL, 大于指定字节 的依旧会使用 file-loader 进行解析

module

处理完雪碧图和小图片的 base64 转换后,对于大图片来说,webpack还可以做到对图片进行压缩,推荐使用 image-webpack-loader,插件提供了多种形式的压缩。

// webpack.base.js

10. 使用 CDN

在项目的 index.html 中,常规方式引入 CDN 链接,此处以 jquery 为例

<

使用 externals

module

使用时

import 

11. progress-bar-webpack-plugin

progress-bar-webpack-plugin

最后推荐个构建体验插件-构建进度条

var 

138832acca7830967e8ada6a145e5a86.png

最后,目前说了大概 10 种开发环境构建速度和体积的优化。关于体积部分,生产环境也会用到。

大家还有没有其他的优化黑魔法,欢迎大家留言交流,共同学习成长。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/431215.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

扫地机器人的特点描写_扫地机器人的特点和作用

在这个新时代社会中&#xff0c;不仅生活方式发生了改变&#xff0c;在我们日常生活中也逐渐智能化&#xff0c;感受到智能化所带来的便捷&#xff0c;就比如说扫地&#xff0c;之前我们都是使用扫帚进行打扫&#xff0c;而如今&#xff0c;扫地机器人融入到大伙的生活中&#…

量子计算机如何确定量子状态,量子计算机六个量子位足以确定三个简单分子的基态...

​每次我们讨论量子计算机时&#xff0c;标题往往是某个人在某个地方使用量子来破坏你的加密并窃取你的专研成果。如果只是这样。但是考虑用量子计算机来解决量子问题可能更为现实。通过近期使用微量子计算机的化学计算来证明。如果用量子计算机解决量子问题听起来有点有迹可循…

Xamarin Mono for VS开发窗体标题(Title)乱码解决方案

利用mono for VS开发一个手机程序&#xff0c;结果只有窗体的标题 title部分是乱码&#xff0c;其他所有地方中文都显示正常&#xff0c;很郁闷。百度很久无果。最后发现只要在 VS菜单中 的 文件->高级保存选型中奖编码设置为 Unicode或者UTF8就行了。更改所有有乱码的文件&…

nlp 命名实体识别 算法_中文命名实体识别算法 Lattice LSTM

中文命名实体识别 (NER) 算法按照输入的类型&#xff0c;可以大致分为 Character-based (字符) 和 Word-based (单词) 两种。这两种方法都存在一些缺陷&#xff0c;Character-based 不能利用词汇和词汇序列信息&#xff1b;Word-based 需要分词&#xff0c;分词的错误会对 NER …

数字能查出笔迹吗_大家都知道文字可以做笔迹鉴定,我想问一下专家阿拉伯数字是否也可以做笔迹鉴定正确率高吗?...

匿名用户1级2008-07-02 回答笔迹是书写人利用笔或其他书写工具&#xff0c;写在纸张或者其他材料上&#xff0c;反映书写人书写习惯特征的一种文字符号。由于每个人生理特征、心理因素和学习写字时的方式、方法、环境、条件的不同&#xff0c;由这些因素所决定的书写习惯也不相…

中国电子计算机大学竞赛安徽分赛,我院学子喜获第十二届全国大学生数学竞赛安徽赛区15项一等奖...

本网讯近日&#xff0c;第十二届全国大学生数学竞赛安徽赛区结果正式揭晓&#xff0c;我校数学与统计学院、电子信息与电气工程学院、物理与材料工程学院、计算机学院共72名学生获安徽赛区奖项&#xff0c;包括安徽省一等奖15项&#xff0c;二等奖15项&#xff0c;三等奖42项&a…

margin background_margin:auto与布局展示

margin:auto 的作用机制。使用margin:auto居中&#xff0c;是css的基本操作。但会发现时不时的失灵。 这篇文章是对该属性的深度分析。首先&#xff0c;以下事实&#xff08;自动填充&#xff09;必须明确&#xff08;1&#xff09;有时候元素就算没有设置width 或height&#…

智能客户端ios_为什么现在的客户端开发越来越不吃香了

这是Kevin的第 672 篇原创&#xff0c;持续日更&#xff0c;做产品经理的创业斜杠青年。年底上线APP&#xff0c;是我们今年PMTalk在产品研发上的一个最终目标。启动这个项目前&#xff0c;团队、和身边创业朋友都不看好这件事&#xff0c;因为客户端开发太重了&#xff0c;小公…

用计算机录制声音让音质更好,电脑如何录屏?电脑录屏如何把声音也录制下来...

电脑如何录屏&#xff1f;电脑录屏如何把声音也录制下来2019年09月24日 14:25作者&#xff1a;黄页编辑&#xff1a;黄页分享电脑如何录屏?当你看到精彩的视频内容时&#xff0c;往往经常会出现&#xff0c;无法下载视频或者是下载很麻烦的问题。那么这个时候&#xff0c;可以…

第九周 10.25-10.31

10.25 HDU 4117 GRE Words 卡了很久的一个题目。比较综合。 看了很久题解还是各种写挫。 毕竟除了模拟题都没敲过那么长的。 题意&#xff1a;按顺序给N个单词&#xff0c;每个单词有权值&#xff0c;删去其中任意单词&#xff0c;使得前面的单词为后面单词的子串&#xff0c;求…

芯片设计中的latch_Latch-up (闩锁效应)

------------------------------------WeChat subscription account&#xff1a;Analog CMOS------------------------------------每周分享Analog IC学习资料/笔记。关注获取。。。。。00 - 本文内容CMOS 中的闩锁效应&#xff08;latch-up&#xff09;的来源具体的避免 latch…

pythonopencv算法_python opencv之SURF算法示例

本文介绍了python opencv之SURF算法示例&#xff0c;分享给大家&#xff0c;具体如下&#xff1a; 目标&#xff1a; SURF算法基础 opencv总SURF算法的使用 原理&#xff1a; 上节课使用了SIFT算法&#xff0c;当时这种算法效率不高&#xff0c;需要更快速的算法。在06年有人提…

计算机如何用vb文本加密,信息加密与隐藏工具的设计与实现VB231

摘 要当今时代&#xff0c;随着电脑的普及应用和互联网的快速发展&#xff0c;网络中露出的安全问题引起普遍关注&#xff0c;网络的安全&#xff0c;主要是网络信息安全&#xff0c;需要采取相应的保护措施&#xff0c;提供适合的安全服务&#xff0c;加密机制和信息隐藏技…

c++判断ftp服务器文件存在性判断_BitTorrent协议与传统文件分发协议对比

一、文件传输前端时间做了和文件传输相关的工作&#xff0c;今天抽空做个总结。总结一下平常使用的几种协议以及BtTorrent协议。其实BitTorrent协议也不是什么新协议&#xff0c;它诞生也十几年了。咱也蹭个热点&#xff0c;最近几年大火的区块链技术也和BitTorrent协议有着异曲…

java基础全套

这是我自己早前听课时整理的java基础全套知识 使用于初学者 也可以适用于中级的程序员 我做成了chm文档的类型 你们可以下载 笔记是比较系统全面&#xff0c;可以抵得上市场上90%的学习资料。讨厌那些随便乱写的资料还有拿出来卖钱的人&#xff01;在这里我免费的分享出来供…

顺丰快递单号的规律_顺丰速运顺丰快递单号查询大全

如何一键查询快递单号顺丰快递单号查询跟踪&#xff0c;鸡蛋是我们日常生活当中最为常见的一种食材啦&#xff0c;相信在每一个家庭当中每天都会吃到鸡蛋&#xff0c;因为鸡蛋的营养价值非常高&#xff0c;它含有丰富的蛋白质&#xff0c;可以为我们身体提供能量&#xff0c;别…

用计算机求正有理数算术平方根的步骤,用计算器求算数平方根、用有理数估计算数平方根的大小.ppt...

用计算器求算数平方根、用有理数估计算数平方根的大小.ppt 上传人&#xff1a;jw****88文档编号&#xff1a;85573818上传时间&#xff1a;2020-06-11格式&#xff1a;PPT页数&#xff1a;20大小&#xff1a;2.14MB下载提示(请认真阅读)1.请仔细阅读文档&#xff0c;确保文档完…

【整理】强化学习与MDP

【入门&#xff0c;来自wiki】 强化学习是机器学习中的一个领域&#xff0c;强调如何基于环境而行动&#xff0c;以取得最大化的预期利益。其灵感来源于心理学中的行为主义理论&#xff0c;即有机体如何在环境给予的奖励或惩罚的刺激下&#xff0c;逐步形成对刺激的预期&#x…

爬虫技术python流程图_基于Python的网络爬虫技术研究

基于Python的网络爬虫技术研究王碧瑶【摘要】摘要&#xff1a;专用型的网络爬虫能够得到想要的返回结果,本文就以拉勾网作为例子,对基于Python的网络爬虫技术进行研究和分析。【期刊名称】数字技术与应用【年(卷),期】2017(000)005【总页数】1【关键词】Python&#xff1b;网络…

python显示文件夹图片_如何显示文件夹中的随机图片(Python)

需要指定正确的相对路径&#xff1a;random.choice([x for x in os.listdir("path") if os.path.isfile(os.path.join("path", x))]) 否则&#xff0c;代码将尝试在当前目录中找到文件&#xff08;image.jpg&#xff09;&#xff0c;而不是"path"…