「译文」我买不起奔驰 🚗,但是奔驰买得起 Oxlint ⚓️ 和 Rolldown ⚡️!
前言
今天刷推特看到的一篇博客,作者是奔驰技术团队!
往期精彩推荐
- 🚀🚀🚀 pnpm 实践:挑战将前后端项目合并在 monorepo 项目并保留历史提交信息
- 优雅,太优雅了,NestJS 🔥 实在是太优雅了!🚀🚀🚀
- 🚀🚀 🚀 太棒了,有了它,终于不用翻阅屎山💩代码了!
- 更多精彩文章欢迎关注我的公众号:萌萌哒草头将军
正文
在当今快速发展的 JavaScript
生态系统中,现代工具发挥着关键作用,不仅影响我们的编码方式,还影响我们花费在编码上的时间和金钱。
在 JavaScript
生态系统中工作时,我们可以利用各种工具来提升质量、一致性和效率。今天,我们将重点介绍两款出色的工具,它们在实现重大里程碑的同时,仍然是大多数用例的直接替代品。
我们将讨论 捆绑器
和 代码检查器
,因为它们可能会成为开发或生产构建的瓶颈。
在 JavaScript
开发中,捆绑器
采用单个代码模块(无论是以 ESM
还是 CommonJS
编写),并将它们组装成一个有凝聚力的、更大的输出,例如完整的应用程序或可重用的库。
对于 Web
应用而言,即使使用 HTTP/2
,此过程也能提升加载速度和运行时效率。对于库而言,提前打包可以减少使用方项目重新打包的需要,并提升执行性能。
相反,JavaScript
中的 linting
涉及检查代码以捕获潜在的错误、风格不一致以及不良的编码习惯。linter
是一种根据一组定义的规则或标准扫描代码库的工具,它有助于确保代码一致性、增强可读性,并在常见错误成为实际问题之前将其预防。
它是如何变化的?
多年来,各种构建工具层出不穷,包括 Webpack
、Turbopack
、Rspack
和 Vite
。其中,Vite
凭借其灵活性、用户友好性以及与各种项目的无缝兼容性,在 JavaScript
社区中得到了广泛的采用。
Vite
底层使用了两个打包器:esbuild
和 Rollup
。您可以在这里找到更多详细信息,因此我们在此不再赘述。Vite
优秀的开源团队在 VoidZero
的支持下,推出了一款基于 Rust
的全新打包器,旨在取代 esbuild
和 Rollup
。这款新的打包器保留了 Rollup
的 API,同时显著提升了性能并进行了许多其他改进。
在代码检查方面,ESLint
一直以来都是 JavaScript
代码中发现问题的首选工具。然而,VoidZero
也推出了一款基于 Rust
的替代方案 Oxlint
,它的性能得到了提升,运行速度比 ESLint
快 50 到 100 倍。
补充一点,需要记住的是,仅仅迁移到
Rust
并不会自动提升速度。许多此类工具也借此机会考察了其他开源项目的架构,找出了设计瓶颈,并根据我们目前所了解的现实情况,为未来做出更可持续的决策。
它对我们有何影响?
这些新工具更令人印象深刻的是,它们可以直接作为替代品。无需重构代码,也无需花时间思考如何集成所有功能。
在 Mercedes-Benz.io
,我们的前端本质上是微前端,所以我们无法仅仅测试完整构建版本并查看其改进程度。尽管如此,我仍然好奇这些工具会给我们带来多少时间和金钱上的影响,而金钱不一定是机器时间,主要是工程时间。
我从一些团队中挑选了几个代码库,一些团队拥有较多的微前端,而另一些团队拥有较少的微前端,并运行了 4 种类型的测试:
- 使用
Rolldown
进行直接替换 - 使用
SASS-Embedded
的Rolldown
进行直接替换 - 使用
SASS-Embedded
+Lightning CSS
的Rolldown
进行直接替换 - 使用
Oxlint
替代ESLint
由于我已经在测试它,所以我决定采用两个可用于生产的替代品,如上所示。
Sass-Embedded
是 Sass
包的替代方案。它支持与 Sass
相同的 JS API
,并且由同一团队维护。然而,Sass-Embedded
是一个 JavaScript
封装器,封装了原生 Dart
可执行文件。这意味着它通常速度更快,尤其是在处理大型 Sass
编译时。
LightningCSS
是一款用 Rust
编写的超快速 CSS
解析器、转换器、打包器和压缩器。它是一款能够编译、优化和转换 CSS
的工具,旨在比其他传统工具更快、更高效。
让我们来看看数字
在您测试的所有代码库中,平均结果显示:
- 仅使用
Rolldown
,构建时间减少了 23%,最高可达 33%。 - 使用
Rolldown + Sass-Embedded
,构建时间减少了 25%,最高可达 33%。 - 使用
Rolldown + Sass-Embedded + Lightning CSS
,构建时间减少了 34%,最高可达 38%。
在 linting 方面,转向 Oxlint
后,平均减少了 71%,最高减少了 97%。
这只是这些工具的开始。Rolldown
仍在开发中,但已经经过社区的大量测试,而 Oxlint
目前处于 Beta 阶段。这两款工具都计划进行更多改进。
这真是太神奇了:我们谈论的不是重构代码,也不是花时间理解和尝试适应新工具。我们谈论的是一些可以让我们的 CI 流程减少 64% 的嵌入式替换(仅指构建 + linting)。
假设大约有 100 个项目,每个项目平均每年有 600 次提交,每次提交都需要构建和 lint。这意味着每年可以节省大约 500 个小时,差不多 21 天。由于机器成本难以计算,因此不计入机器成本,我们可以想象工程成本,包括生产力、专注度,以及能否顺利进入流程。
这种节省不仅能显著提高开发效率,还能让团队有更多时间专注于功能开发和创新,从而提升整体项目的质量和响应速度。
最后
原文地址:www.mercedes-benz.io/blog/2025-0…
原推特地址:x.com/boshen_c/st…
往期精彩推荐
- 🚀🚀🚀 pnpm 实践:挑战将前后端项目合并在 monorepo 项目并保留历史提交信息
- 优雅,太优雅了,NestJS 🔥 实在是太优雅了!🚀🚀🚀
- 🚀🚀 🚀 太棒了,有了它,终于不用翻阅屎山💩代码了!
- 更多精彩文章欢迎关注我的公众号:萌萌哒草头将军