oxc
Rust 编写的高性能 JavaScript/TypeScript 工具集,含 Parser、Tra
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
Rust 编写的高性能 JavaScript/TypeScript 工具集,含 Parser、Tra
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
你有没有想过,每次运行 npm run lint 或者保存文件时 prettier 自动格式化,这些操作背后的编译器在做什么?大多数前端开发者可能从未关心过——毕竟 JavaScript 生态有 Babel、有 ESLint、有 Prettier,这些工具够用了。但当你维护一个万级文件的前端项目时,等待 eslint 检查的那几十秒、或者 webpack 打包时漫长的解析过程,就会变成实实在在的效率瓶颈。
Oxc 正是来解决这个问题的。它是一套用 Rust 编写的 JavaScript/TypeScript 高性能工具集,涵盖了 Parser(解析器)、Transformer(转译器)、Minifier(压缩器)、Linter(代码检查)、Formatter(格式化)五大核心能力。目前 GitHub 星标已突破 21,000,成为 Rust 在前端工具链领域最具影响力的项目之一。
JavaScript 生态的工具传统上由 Node.js 运行,而 Node.js 本身基于 JavaScript 引擎。ESLint 在处理大型代码库时性能瓶颈显著——单次全量检查往往需要几十秒甚至更久。Babel 的转译速度同样是 CI 流水线的痛点。
Oxc 的核心思路是:用 Rust 重写这些工具的核心逻辑,通过原生代码的极致性能,从根本上解决速度问题。官方的基准测试数据显示,Oxc 的 Parser 比 Babel 快 30 倍,Minifier 比 Terser 快 100 倍以上。这个数字并非来自人工构造的"完美场景",而是对真实开源项目(如 React、Vue、Vite)进行测量后的结果。
这种性能差距并非偶然。Rust 的零成本抽象、arena 内存分配器、以及编译器对 SIMD 等底层优化的天然支持,使得 Oxc 在 CPU 密集型的解析/转译场景下拥有 Node.js 方案无法企及的天赋优势。
Oxc 不是一个"大一统工具",而是一个模块化组件仓库。项目以 Rust workspace 形式组织,包含 30+ 个独立 crate(子包),每个 crate 专注于一个功能领域:
各 crate 之间通过精心设计的接口解耦,用户可以单独引入某个组件(如只使用 Parser),也可以组合多个组件构建完整的工具链。这种设计哲学直接服务于 VoidZero 的宏大愿景——构建一套统一、高性能、互操作的 JavaScript 工具链。
在 Oxc 的架构中,oxc_allocator(arena 分配器) 是最关键的基础组件。传统的 AST 实现依赖引用计数(Rc/Arc)来管理节点生命周期,而 Oxc 使用 arena 模式:整个编译单元的所有 AST 节点一次性分配在同一块内存区域中,节点之间通过指针偏移量而非引用计数来关联。这消除了堆分配的碎片化开销和引用计数的原子操作开销,使得 AST 的遍历、克隆、修改都极为高效。
在 arena 内存模型下,Oxc 还实现了**零拷贝(Zero-Copy)**操作:源代码的字符串切片(span)直接绑定到 AST 节点,无需额外的字符串拷贝。这个设计在处理大型代码库时,将内存分配次数降低了 1~2 个数量级。
对于大多数开发者而言,并不需要深入理解 Oxc 的内部架构,直接使用它封装好的应用即可。
Oxlint 是 Oxc 的 linting 工具,通过 npx oxlint@latest 一键安装使用。它兼容大量 ESLint 规则,同时提供更快的检查速度。Shopify、ByteDance、Shopee、Preact 等知名团队已在生产环境中采用 Oxlint 作为 ESLint 的替代方案。Oxlint 还支持 JS 插件系统,允许用户用 JavaScript 编写自定义规则,生态扩展性良好。
Oxfmt 是代码格式化工具,对标 Prettier,官方称之为 "Prettier-alternative built with Rust"。目前处于 Beta 阶段,提供了 npx oxfmt@latest 快速试用。对于已有 Prettier 配置的项目,Oxfmt 提供了迁移指南,降低了切换成本。
此外,Oxc 还提供了在线 Playground(https://playground.oxc.rs),无需安装任何依赖,直接在浏览器中体验 Parser、Transformer、Linter 等所有工具的功能,实时查看 AST 输出和转译结果。
Oxc 并不只是一个独立工具,它已是多个关键基础设施的上游依赖:
这种"底层基础设施"的角色,使 Oxc 的影响力远超它自身的功能边界——只要 Rolldown 和 Vite 继续发展,Oxc 的应用范围就会持续扩大。
Oxc 并非在所有场景下都完美替代现有工具:
Oxc 的出现标志着 JavaScript 工具链进入了"Rust 时代"。它证明了用高性能系统语言重写基础设施层,可以带来数量级的体验提升。更重要的是,Oxc 的模块化设计使其成为一个可复用的编译器框架,而不仅仅是一个 lint 工具——它降低了整个 JavaScript 工具链的创新门槛,未来可能会催生出更多基于 Oxc 的创新应用。
如果你维护的前端项目需要更快的检查速度,或者你对编译器原理感兴趣想动手实践,Oxc 值得一试。

图1:Oxc 官方网站首页,展示了项目 Logo 和导航菜单