前端构建神器 Parcel 大「瘦身」:依赖项削减 25%,安装体积砍半!


在前端工具链百花齐放的今天,知名构建工具Parcel带来了令人振奋的2.15.0版本更新。最让开发者兴奋的是:通过将核心功能改用Rust重写,新版本在保持全部功能的同时,node_modules体积直接砍掉近一半,依赖包数量也减少了四分之一。这对于那些被庞大node_modules文件夹困扰的开发者来说无疑是一剂强心针。

拥抱「重型武器」,构建再也不担心翻车

本次更新最大的亮点是HTML处理链路的彻底重构。Parcel团队放弃了此前使用的PostHTML方案。PostHTML是什么?简单来说,它是一个用JavaScript编写的HTML处理工具,通过插件机制来完成HTML的解析和转换。虽然PostHTML生态丰富,有着大量现成的插件可用,但其解析能力始终无法企及浏览器级别。

为了彻底解决这个问题,Parcel团队转向了「重型武器」——直接搬来了Firefox浏览器和Servo渲染引擎中的核心组件,用Rust语言重新打造了HTML处理模块。这就好比之前用的是「民用工具」,现在换成了「工业级设备」,解析准确性得到了质的飞跃。

举个例子:HTML规范中关于解析的部分竟然有100多页之厚,里面包含了20多年来Web发展过程中积累的各种特殊情况。普通的解析器很难完美处理这些边界情况,但浏览器级的解析引擎在这方面已经过了无数实战检验。新版本采用Servo的html5ever解析器,意味着你的HTML文件将获得与Chrome、Firefox等主流浏览器完全一致的解析结果。

更保守但更聪明的压缩策略

在代码压缩方面,新版本的做法很有意思。与其他动辄追求极致压缩率的工具不同,Parcel选择了更明智的「保守压缩」策略。比如说,过去很多工具都会激进地删除HTML中的空白字符,但实际上这可能会破坏页面样式,因为CSS中的white-space: pre属性就需要保留这些空白。新版本在这类情况下会谨慎处理,宁可多留一些空白,也不破坏页面效果。

不过,在安全的优化场景下,新版本反而比之前更加智能。它能智能判断何时可以安全地移除属性引号、删除布尔属性的值,甚至利用HTML的容错机制移除一些可选的闭合标签。这些优化既保证了页面完整性,又能带来一定的体积收益。

SVG处理也来了次大换血

SVG处理模块同样迎来重大升级。新版本引入了名为OXVG的Rust工具替代了原有的SVGO。测试显示,这一替换带来了数倍的性能提升。同时,得益于与新HTML解析器的无缝配合,现在处理网页中的内嵌SVG图标也变得更加高效可靠。

对于经常和React打交道的开发者来说,还有一个好消息:新版本重写了SVG转JSX的功能,直接将SVG转换为JavaScript语法树,省去了中间环节,处理效率得到显著提升。

新版本值得升级吗?

答案是肯定的。如果你正在使用Parcel,升级到2.15.0版本将带来立竿见影的收益:更小的项目体积、更快的安装速度、更可靠的构建结果。而且,为了照顾现有项目,新版本保留了对PostHTML插件和SVGO配置的兼容支持,升级过程几乎不会带来任何副作用。

在当前前端工具链百家争鸣的背景下,Parcel用这次更新展示了一个颇具前瞻性的发展方向:用更可靠的系统级语言重写核心功能,同时保持与现有生态的友好共存。这种演进思路值得其他工具借鉴。


相關推薦

2022-11-16

本 Xcode 的速度更快、体积缩小了 30%、增加的并行性使得构建项目的速度提高了 25%,以及长时间运行测试的速度提高了 30%。 但在 Xcode 14 发布后不久,Emerge 发现一些 iOS 应用程序的体积则是出现了明显增加,其中从 9 月中旬到 1

2025-03-25

Parcel 是用于 Web 的零配置构建工具。它将出色的开箱即用开发体验与可扩展的体系结构相结合,可将你的项目从零发展为大规模生产应用程序。 Parcel 2.14.2 已发布,具体更新内容包括: Fixed Core 启用解析开发依赖项中的

2023-01-20

Parcel 是用于 Web 的零配置构建工具。它将出色的开箱即用开发体验与可扩展的体系结构相结合,可将你的项目从零发展为大规模生产应用程序。 Parcel 2.8.3 现发布,更新内容如下: Core 过滤掉 title execArgv 到 workers Bu

2022-08-06

Parcel 是用于 Web 的零配置构建工具。它将出色的开箱即用开发体验与可扩展的体系结构相结合,可将你的项目从零发展为大规模生产应用程序。 Parcel 2.7 发布,更新内容如下: 新增 Core 为带有 --log-level verbose 的已解析目

2022-11-11

Parcel 是用于 Web 的零配置构建工具。它将出色的开箱即用开发体验与可扩展的体系结构相结合,可将你的项目从零发展为大规模生产应用程序。 Parcel 2.8 发布,更新内容如下: 新增 Core 通过拆分依赖关系,使用符号数据

2025-04-01

略,如 Tree Shaking、代码压缩等等。 框架无关: 不和任何前端框架绑定,保证足够的灵活性。 新版本值得关注的变更如下: 新功能 循环引用检测 构建 HTTP imports Lazy compilation 改进 支持 AMD 模块 性能优

2023-11-16

Parcel 是用于 Web 的零配置构建工具。它将出色的开箱即用开发体验与可扩展的体系结构相结合,可将你的项目从零发展为大规模生产应用程序。 Parcel 2.10.3 已发布,具体更新内容包括: Fixed Core 将先前递延的 assets 标

2022-05-27

Parcel 是用于 Web 的零配置构建工具。它将出色的开箱即用开发体验与可扩展的体系结构相结合,可将你的项目从零发展为大规模生产应用程序。 Parcel v2.6.0 现已发布。此版本包含的新功能包括 React 的 error overlay、对 HMR 中 source m

2023-08-03

p;busybox 以减小系统的体积和运行时资源消耗。在保持瘦身的同时,Alpine Linux 还提供了自己的包管理工具 apk,可以在其网站上查询软件包,或直接通过 apk 命令进行查询和安装。 但遗憾的是,Alpine Linux 最高产打包者已决定

2023-10-26

Parcel 是用于 Web 的零配置构建工具。它将出色的开箱即用开发体验与可扩展的体系结构相结合,可将你的项目从零发展为大规模生产应用程序。 Parcel 2.10.1 已发布,具体更新内容包括: Fixed Core 在 CI 中使用现代

2023-06-11

Parcel 是用于 Web 的零配置构建工具。它将出色的开箱即用开发体验与可扩展的体系结构相结合,可将你的项目从零发展为大规模生产应用程序。 Parcel 2.9.2 已发布,具体更新内容包括: Fixed Core 修复当 entries 看起

2024-10-24

划引入一个 JDK build-time 配置选项--enable-linkable-runtime,在构建 JDK 时,jlink可以在不使用 JDK 的 JMOD 文件的情况下创建运行时映像,并且不包含那些文件-即没有 jmods 目录。 $ configure [ ... other options ... ] --enable-linkable-runtime $ make ima

2022-05-24

p;busybox 以减小系统的体积和运行时资源消耗。在保持瘦身的同时,Alpine Linux 还提供了自己的包管理工具 apk,可以在其网站上查询软件包,或直接通过 apk 命令进行查询和安装。 Alpine Linux 3.16 更新内容如下: /tmp 挂载为 tmpf

2022-12-13

node_modules 黑洞、加快安装速度,我们对 Vant 的 npm 依赖和构建产物进行了优化。 相较于 Vant 3.6.2 版本,Vant 4.0.0 版本的安装体积由 7MB 下降至 5MB。作为对比,社区中主流组件库的安装体积普遍在 15MB ~ 80MB。你可以通过 packagep