Vite 8 背后的秘密:为什么尤雨溪选择了 Oxc

简介: Oxc(The Oxidation Compiler)是用Rust打造的高性能JS/TS工具链,含解析、Lint、格式化、转换、压缩等核心组件。内存零GC、零拷贝解析、共享AST架构,使Oxlint比ESLint快100倍、Oxfmt比Prettier快30倍。已集成Vite 8,5分钟即可升级开发体验!

Oxc(The Oxidation Compiler)是一个用Rust编写的高性能JavaScript和TypeScript工具集合,提供了极速的开发体验。无论你是前端开发者还是Rust爱好者,这个完整的教程将帮助你在5分钟内快速搭建JavaScript开发环境!

什么是Oxc?

Oxc是一个基于Rust构建的现代化JavaScript工具链,包含解析器(Parser)、格式化器(Formatter)、代码检查器(Linter)、转换器(Transformer)和压缩器(Minifier)等核心组件。Oxc的设计目标是提供极致性能和开发者友好的体验。

image

Oxc官方文档:https://www.oxcjs.com/

如果你写过超过10万行的前端项目,一定对这种场景不陌生:保存代码后,编辑器右下角的ESLint图标转个不停;CI流水线里,静态检查环节占了80%的时间;改一行代码,热更新要等3秒以上。

这些问题的根源很简单:我们用JavaScript写的工具,已经跟不上JavaScript项目的规模了。直到Oxc出现。

先搞清楚:Oxc到底是什么?

很多人说Oxc是“Rust写的ESLint”或者“更快的Prettier”,这都太小看它了。

Oxc的全称是The Oxidation Compiler(氧化编译器,因为Rust的吉祥物是螃蟹,而氧化就是生锈的过程),它不是一个单点工具,而是一整套用Rust重写的前端工具链底座。它把前端开发最核心的6件事——解析、lint、格式化、转换、模块解析、压缩——全部重新做了一遍,而且每一件都做到了当前最快。

更重要的是,它不是把这些工具简单地堆在一起,而是从架构上让它们共享同一个底层。这才是它能比现有工具快几十上百倍的根本原因。

为什么Oxc能快到离谱?

很多人会说“因为用了Rust”,但这只是一半的答案。Biome也是Rust写的,但Oxc比它还要快3倍左右。真正拉开差距的,是Oxc的架构设计。

1. 内存管理:把GC彻底踢出编译流程

JavaScript写的工具最大的性能瓶颈是什么?是垃圾回收(GC)。ESLint在遍历AST的时候,会创建几百万个对象,然后又丢弃,这会触发频繁的GC,把CPU时间都浪费在内存管理上。

Oxc用了一种叫Arena Allocation(区域分配)的技术。简单说,就是在编译开始前,一次性开辟一块大的连续内存,所有AST节点都在这块内存里分配,编译结束后,一次性把整块内存释放。

没有了频繁的malloc和free,没有了GC停顿,内存访问的局部性也大大提升,性能自然就上去了。

2. 零拷贝解析:能不复制就不复制

传统的解析器在处理字符串的时候,会把每个token都复制一份新的字符串对象。比如解析const name = "oxc",会为constnameoxc分别创建新的字符串。

Oxc的解析器几乎不做任何复制。它所有的token都只是指向原始源代码的一个引用(起始位置和长度)。整个解析过程,除了AST节点本身,几乎没有额外的内存分配。

这不仅节省了内存,更重要的是节省了内存带宽——这在现代CPU上是比计算更宝贵的资源。

3. 共享AST:一次解析,多次使用

这是Oxc最核心的架构优势,也是它和所有其他工具最大的区别。

想想你现在的工具链:ESLint会解析一遍代码,Prettier会再解析一遍,TypeScript编译器又会解析一遍,Babel还要再解析一遍。同样的代码,被不同的工具重复解析4、5次,这是多大的浪费?

Oxc的设计是:解析一次,生成一个AST,然后所有工具(lint、format、transform、minify)都共享这个AST

这意味着,当你运行oxlint && oxfmt的时候,代码只会被解析一次。未来,当Oxc的工具链完全成熟后,你的整个构建流程可能只需要解析一次代码,这带来的性能提升是指数级的。

现在就能用的工具,每一个都能让你爽到

Oxc不是一个画饼的项目,它的核心工具已经非常成熟,完全可以在生产环境使用。

Oxlint:让ESLint看起来像个古董

Oxlint是Oxc生态里最成熟的工具,也是目前最快的JavaScript linter。

官方数据是比ESLint快50-100倍,这不是跑分,是真实项目里的实测数据。我自己的一个30万行的React项目,ESLint全量检查要跑1分20秒,Oxlint只需要1.2秒。

更重要的是,它的兼容性做得非常好:

  • 已经实现了700+条规则,覆盖了ESLint核心和大部分常用插件(React、TypeScript、Import、Unicorn等)
  • 支持ESLint的JS插件,你现有的自定义规则几乎不用改
  • 提供了自动迁移工具@oxlint/migrate,能一键把你的.eslintrc转成Oxlint配置
  • 支持真正的类型感知lint,用的是微软官方的TypeScript Go端口(tsgo),而不是自己实现的类型系统

现在很多大公司已经把ESLint换成了Oxlint,包括Elastic、Sentry、PostHog这些明星项目。

Oxfmt:格式化再也不会卡了

Prettier什么都好,就是太慢了。格式化一个大文件要等好几秒,这在写代码的时候是非常打断思路的。

Oxfmt比Prettier快30倍,比Biome快3倍。在我的机器上,格式化整个项目(1000多个文件)只需要0.3秒,快到你几乎感觉不到它的存在。

它的输出和Prettier几乎完全一致,官方说已经通过了100%的Prettier JavaScript和TypeScript测试。任何格式化差异都会被当作bug处理。

而且它内置了很多Prettier需要插件才能实现的功能:

  • 导入排序
  • Tailwind CSS类排序
  • package.json字段排序
  • 嵌入式格式化(CSS-in-JS、GraphQL等)

替换Prettier几乎不需要改任何配置,只要把prettier命令换成oxfmt就行。

其他工具:正在快速补齐

除了lint和format,Oxc的其他工具也在快速成熟:

  • Parser:比SWC快3倍,通过了所有Test262 Stage4测试,是目前最标准的JS/TS解析器
  • Transformer:替代Babel,支持TypeScript、JSX转换,React Fast Refresh等
  • Resolver:比webpack的enhanced-resolve快28倍,行为完全一致
  • Minifier:还在alpha阶段,但已经比Terser快很多,未来会成为Rolldown的默认压缩器

Oxc的真正野心:统一整个前端工具链

如果Oxc只是做了更快的ESLint和Prettier,那它还不足以被称为“未来的底座”。它真正的目标,是成为整个前端生态的基础设施。

你可能已经听说过Rolldown——Vite未来的默认打包器。而Rolldown,就是完全构建在Oxc之上的。

Vite 8已经默认使用Rolldown作为打包器,这意味着:

  • 模块解析用的是oxc-resolver
  • 代码转换用的是oxc-transformer
  • 代码压缩用的是oxc-minifier

也就是说,当你升级到Vite 8的时候,你已经在不知不觉中使用Oxc了。

这只是开始。未来,TypeScript编译器、测试运行器、代码分析工具……所有和JS/TS处理相关的工具,都可能基于Oxc构建。

现在就可以开始用了

如果你想体验Oxc带来的速度提升,现在就可以动手:

1. 替换ESLint

pnpm add -D oxlint

然后把package.json里的lint脚本改成:

{
   
  "scripts": {
   
    "lint": "oxlint",
    "lint:fix": "oxlint --fix"
  }
}

2. 替换Prettier

pnpm add -D oxfmt

脚本改成:

{
   
  "scripts": {
   
    "fmt": "oxfmt . --write",
    "fmt:check": "oxfmt . --check"
  }
}

就是这么简单。不需要改任何配置,不需要学习新的语法,你就能获得几十倍的速度提升。

最后说几句

前端工具链已经停滞太久了。过去十年,我们一直在用JavaScript写JavaScript的工具,这在项目规模小的时候没问题,但当项目达到几十万、几百万行的时候,性能瓶颈就变得无法忍受。

Oxc的出现,不是对现有工具的简单优化,而是一次范式转移。它证明了,用系统级语言重写前端工具链,能带来数量级的性能提升。

更重要的是,Oxc不是一个孤立的项目,它背后有VoidZero公司的支持,有尤雨溪团队的背书,已经成为Vite官方的技术路线。这意味着,它不会像很多开源玩具一样半途而废。

如果你还在被缓慢的工具链折磨,现在就试试Oxc吧。它不会让你失望的。

目录
相关文章
|
7天前
|
人工智能 JSON 供应链
畅用7个月无影 JVS Claw |手把手教你把JVS改造成「科研与产业地理情报可视化大师」
LucianaiB分享零成本畅用JVS Claw教程(学生认证享7个月使用权),并开源GeoMind项目——将JVS改造为科研与产业地理情报可视化AI助手,支持飞书文档解析、地理编码与腾讯地图可视化,助力产业关系图谱构建。
23411 6
畅用7个月无影 JVS Claw |手把手教你把JVS改造成「科研与产业地理情报可视化大师」
|
16天前
|
缓存 人工智能 自然语言处理
我对比了8个Claude API中转站,踩了不少坑,总结给你
本文是个人开发者耗时1周实测的8大Claude中转平台横向评测,聚焦Claude Code真实体验:以加权均价(¥/M token)、内部汇率、缓存支持、模型真实性及稳定性为核心指标。
5967 25
|
12天前
|
人工智能 JSON BI
DeepSeek V4 来了!超越 Claude Sonnet 4.5,赶紧对接 Claude Code 体验一把
JeecgBoot AI专题研究 把 Claude Code 接入 DeepSeek V4Pro 的真实体验与避坑记录 本文记录我将 Claude Code 对接 DeepSeek 最新模型(V4Pro)后的真实体验,测试了 Skills 自动化查询和积木报表 AI 建表两个场景——有惊喜,也踩
4554 13
|
11天前
|
人工智能 缓存 BI
Claude Code + DeepSeek V4-Pro 真实评测:除了贵,没别的毛病
JeecgBoot AI专题研究 把 Claude Code 接入 DeepSeek V4Pro,跑完 Skills —— OA 审批、大屏、报表、部署 5 大实战场景后的真实体验 ![](https://oscimg.oschina.net/oscnet/up608d34aeb6bafc47f
3746 11
Claude Code + DeepSeek V4-Pro 真实评测:除了贵,没别的毛病
|
28天前
|
人工智能 自然语言处理 安全
Claude Code 全攻略:命令大全 + 实战工作流(建议收藏)
本文介绍了Claude Code终端AI助手的使用指南,主要内容包括:1)常用命令如版本查看、项目启动和更新;2)三种工作模式切换及界面说明;3)核心功能指令速查表,包含初始化、压缩对话、清除历史等操作;4)详细解析了/init、/help、/clear、/compact、/memory等关键命令的使用场景和语法。文章通过丰富的界面截图和场景示例,帮助开发者快速掌握如何通过命令行和交互界面高效使用Claude Code进行项目开发,特别强调了CLAUDE.md文件作为项目知识库的核心作用。
22346 64
Claude Code 全攻略:命令大全 + 实战工作流(建议收藏)

热门文章

最新文章