OXC logo

OXC

基于 Rust 构建的模块化高性能 JavaScript/TypeScript 工具链,包含解析器、转换器、压缩器、Linter(Oxlint)和格式化器(Oxfmt),是 Vite 8 和 Rolldown 的核心编译基础设施。

编译转译Rust高性能Oxlint

OXC 是完全使用 Rust 编写的模块化 JavaScript/TypeScript 工具链,解析器速度约为 SWC 的 3 倍,Oxlint 比 ESLint 快 50-100 倍,Oxfmt 比 Prettier 快 30 倍,是 Vite 8 和 Rolldown 的核心编译引擎。

OXC (The JavaScript Oxidation Compiler) — Rust 前端工具链

基于 Rust 构建的模块化高性能 JavaScript/TypeScript 工具链,包含解析器、转换器、压缩器、Linter(Oxlint)和格式化器(Oxfmt),是 Vite 8 和 Rolldown 的核心编译基础设施。

技术简介说明

OXC(The JavaScript Oxidation Compiler,"Oxidation"致敬 Rust 的氧化过程)是一个完全使用 Rust 编写的模块化 JavaScript/TypeScript 工具链。与 SWC 定位为"综合性编译器平台"不同,OXC 的愿景更为宏大——它旨在构建统一的、高性能的 JavaScript 工具链,覆盖解析、转换、压缩、linting、格式化和模块解析等前端开发的完整工具需求,替代 ESLint + Prettier + Babel + Rollup 等分散工具。

OXC 的核心竞争力在于其模块化设计极致性能。每个组件(Parser、Transformer、Minifier、Resolver、Linter、Formatter)都是独立的 Rust crate,可以被其他工具单独引用。其解析器速度约为 SWC 的 3 倍,Oxlint 比 ESLint 快 50-100 倍,Oxfmt 比 Prettier 快 30 倍。这种性能优势使 OXC 成为 Vite 8 和 Rolldown 的核心编译引擎,直接影响着数百万前端开发者的构建体验。

2025-2026 年是 OXC 的爆发之年。Oxlint 1.0 于 2025 年 6 月发布稳定版,Oxfmt 于 2026 年 2 月进入 Beta,Vite 8(2026 年 3 月)开始使用基于 OXC 的 Rolldown 作为默认打包器。OXC 团队核心成员 Boshen Chen 加入 VoidZero(Evan You 创立的公司),VoidZero 于 2025 年 6 月被 Cloudflare 收购,为 OXC 的发展提供了强大的组织支撑。

基本信息

项目详情
官网https://oxc.rs
GitHubhttps://github.com/oxc-project/oxc
LicenseMIT
最新版本oxlint v1.73.0 / oxfmt v0.58.0 / oxc crates v0.139.0
主要维护者Boshen Chen(创始人,VoidZero VP of Engineering)
核心贡献者overlookmotel、camc314 (Cameron Clark)、Dunqing、leaysgur 等
公司支持VoidZero(2025.06 被 Cloudflare 收购)
GitHub Stars~21,900
总提交数18,881+
贡献者200+
npm 周下载量oxc-parser ~1030 万 / oxlint ~670 万

快速上手

安装

Oxlint(Linter)

# npm 安装
npm install --save-dev oxlint
 
# 或使用独立二进制(更快)
# macOS
brew install oxc-project/tap/oxlint
 
# 或通过 curl
curl -fsSL https://oxc.rs/install.sh | sh

OXC Rust Crates(供 Rust 项目使用)

# Cargo.toml
[dependencies]
oxc_parser = "0.139"
oxc_ast = "0.139"
oxc_allocator = "0.139"

基础配置

Oxlint 配置.oxlintrc.json):

{
  "rules": {
    "no-unused-vars": "error",
    "no-console": "warn",
    "typescript/no-explicit-any": "error",
    "react-hooks/rules-of-hooks": "error"
  },
  "categories": {
    "correctness": "error",
    "suspicious": "warn",
    "pedantic": "off",
    "style": "warn",
    "nursery": "off",
    "restriction": "off"
  }
}

最小示例

# 运行 Oxlint
npx oxlint src/
 
# 自动修复
npx oxlint src/ --fix
 
# 指定配置
npx oxlint src/ -c .oxlintrc.json
 
# 输出统计
npx oxlint src/ --diagnostic-level warning

通过 Rust API 使用解析器

use oxc_allocator::Allocator;
use oxc_parser::Parser;
use oxc_ast::ast::Program;
use oxc_span::SourceType;
 
fn parse(source_text: &str) {
    let allocator = Allocator::default();
    let source_type = SourceType::default().with_module(true);
    let ret = Parser::new(&allocator, source_text, source_type).parse();
    
    // ret.program 是解析后的 AST
    // ret.errors 包含解析错误
    println!("Parsed {} top-level statements", ret.program.body.len());
}

核心概念与架构

模块化架构

OXC 采用高度模块化的设计,每个组件都是独立的 Rust crate:

┌────────────────────────────────────────────────────────────────┐
│                      OXC 模块化架构                              │
├────────────────────────────────────────────────────────────────┤
│                                                                │
│  基础设施层                                                     │
│  ├── oxc_allocator      — 内存分配器(基于 Bump allocator)     │
│  ├── oxc_span           — 源码位置追踪                         │
│  ├── oxc_syntax         — 语法基础定义                          │
│  └── oxc_diagnostics    — 诊断信息框架                         │
│                                                                │
│  核心编译层                                                     │
│  ├── oxc_parser         — JS/TS 解析器                         │
│  ├── oxc_ast            — AST 定义和遍历                       │
│  ├── oxc_transformer    — TypeScript/JSX/ES 转换               │
│  ├── oxc_minifier       — 代码压缩 + 死代码消除                 │
│  └── oxc_codegen        — 代码生成                             │
│                                                                │
│  工具层                                                         │
│  ├── oxlint             — Linter(ESLint 兼容)                 │
│  ├── oxfmt              — 格式化器(Prettier 兼容)              │
│  └── oxc_resolver       — Node.js 模块解析                     │
│                                                                │
│  集成层                                                         │
│  ├── Rolldown           — Rust 打包器(Vite 8 核心)            │
│  └── 外部工具集成        — SWC、Vite、各种编辑器                  │
│                                                                │
└────────────────────────────────────────────────────────────────┘

核心设计特点

  1. Bump Allocator:使用 bump allocation 策略,解析后一次性释放所有 AST 内存,避免逐个释放的开销
  2. 零拷贝解析:解析器通过 &str 引用源码,不复制字符串数据
  3. SIMD 优化:词法分析器利用 SIMD 指令加速(Q3 2026 路线图重点)
  4. 独立 crate:每个组件可独立使用,不强制引入整个工具链
  5. WTF-8 编码:使用 WTF-8 编码处理 Unicode,兼容 JavaScript 的 UTF-16 语义

处理流程

源代码 (JS/TS/JSX/TSX)
       │
       ▼
  oxc_parser(词法分析 + 语法分析)
       │
       ▼
  oxc_ast(AST + 类型信息 + 源码映射)
       │
       ├──→ oxc_transformer(TS 类型剥离、JSX 转换、ES 降级)
       │         │
       │         ▼
       │    oxc_codegen(代码生成 → JS 输出)
       │
       ├──→ oxc_minifier(压缩 + DCE + 变量混淆)
       │         │
       │         ▼
       │    oxc_codegen(压缩后输出)
       │
       ├──→ oxlint(规则检查 → 诊断信息)
       │
       └──→ oxfmt(格式化 → 美化输出)

核心特性

  • 模块化 Rust 工具链:Parser、Transformer、Minifier、Linter、Formatter、Resolver 均可独立使用
  • 极致性能:解析器比 SWC 快约 3 倍,Oxlint 比 ESLint 快 50-100 倍,Oxfmt 比 Prettier 快 30 倍
  • Oxlint 1.0:800+ 规则,支持 ESLint、TypeScript、React Hooks、Testing Library 等
  • Oxfmt:Prettier 兼容的格式化器,支持 JS/TS/JSON/YAML/CSS/Markdown/HTML/Vue 等
  • oxc_resolver:Node.js 兼容的 CJS/ESM 模块解析,比 enhanced-resolve 快 28 倍
  • React Compiler:Rust 实现的 React Compiler(去除 Babel AST 中间层,性能提升 2x)
  • 类型感知 Linting:基于 tsgo 的类型感知 linting(2025 年 12 月 Alpha)
  • JS 插件支持:Oxlint 可运行大多数现有 ESLint 插件(2026 年 3 月 Alpha)
  • 驱动 Rolldown/Vite 8:OXC 是 Vite 8 核心打包器 Rolldown 的编译引擎
  • Bump Allocator:基于 bump allocation 的内存管理,极致性能
  • WTF-8 编码:兼容 JavaScript UTF-16 语义的 Unicode 处理
  • 跨平台:支持 macOS、Linux、Windows,提供独立二进制和 npm 包

生态图

OXC 生态系统

┌──────────────────────────────────────────────────────────────────────┐
│                        OXC 生态系统                                  │
├──────────────────────────────────────────────────────────────────────┤
│                                                                      │
│  核心工具                                                             │
│  ├── Oxlint            — Linter(800+ 规则,ESLint 兼容)            │
│  ├── Oxfmt             — 格式化器(Prettier 兼容,30x 更快)         │
│  └── oxc_resolver      — 模块解析器(28x faster than enhanced-resolve)│
│                                                                      │
│  编译引擎(Rust Crates)                                              │
│  ├── oxc_parser        — JS/TS 解析器                               │
│  ├── oxc_transformer   — TypeScript/JSX/ES 转换                     │
│  ├── oxc_minifier      — 代码压缩                                    │
│  ├── oxc_codegen       — 代码生成                                    │
│  └── oxc_ast           — AST 定义和遍历                              │
│                                                                      │
│  集成项目                                                             │
│  ├── Rolldown          — Rust 打包器(Vite 8 核心,使用 OXC 编译)   │
│  ├── Vite 8            — 默认打包器从 esbuild 切换到 Rolldown        │
│  └── Rolldown 插件      — 兼容 Rollup 插件生态                       │
│                                                                      │
│  JS 插件生态                                                          │
│  ├── Oxlint JS Plugins — 运行 ESLint 插件(Alpha,~80% 可迁移)      │
│  └── ESLint 兼容       — 覆盖标准 ESLint + TS + React + Testing Lib  │
│                                                                      │
│  组织支撑                                                             │
│  ├── VoidZero          — Evan You 创立的公司(Vite/Rolldown 母公司)  │
│  ├── Cloudflare        — 2025.06 收购 VoidZero                       │
│  └── oxc-project       — GitHub 组织                                 │
│                                                                      │
│  企业用户                                                             │
│  ├── Shopify、Airbnb、Mercedes-Benz                                   │
│  ├── ByteDance、Shopee、Bun、Preact                                  │
│  └── 更多企业迁移中...                                                │
│                                                                      │
└──────────────────────────────────────────────────────────────────────┘

适用场景

  • 替代 ESLint 进行 Linting:Oxlint 速度快 50-100 倍,适合大型代码库
  • 替代 Prettier 进行格式化:Oxfmt 速度快 30 倍,支持更多格式
  • Vite/Rolldown 项目:Vite 8 自动使用基于 OXC 的 Rolldown
  • Rust 项目中的 JS 处理:需要在 Rust 工具中解析/转换 JS/TS 代码
  • 大型代码库 CI/CD:利用 Oxlint 的速度优势加速 CI lint 步骤
  • 替代 Babel 进行转译:当不需要 Babel 的复杂插件生态时
  • 模块解析优化oxc_resolverenhanced-resolve 快 28 倍
  • React Compiler:Rust 实现的 React Compiler 性能更优

开发与工程化

Oxlint 配置进阶

{
  "rules": {
    "no-unused-vars": ["error", { "argsIgnorePattern": "^_" }],
    "no-console": ["warn", { "allow": ["warn", "error"] }],
    "typescript/no-explicit-any": "error",
    "react-hooks/rules-of-hooks": "error",
    "react-hooks/exhaustive-deps": "warn"
  },
  "categories": {
    "correctness": "error",
    "suspicious": "warn",
    "pedantic": "off",
    "style": "warn"
  },
  "overrides": [
    {
      "files": ["**/*.test.ts", "**/*.spec.ts"],
      "rules": {
        "no-console": "off"
      }
    }
  ]
}

CI/CD 集成

# GitHub Actions 示例
- name: Run Oxlint
  run: npx oxlint src/ --format github
 
# Oxfmt 检查
- name: Check Formatting
  run: npx oxfmt --check src/
 
# 缓存
- name: Cache OXC
  uses: actions/cache@v4
  with:
    path: .oxlint-cache
    key: ${{ runner.os }}-oxlint-${{ hashFiles('.oxlintrc.json') }}

与现有 ESLint 的渐进迁移

# 1. 安装 Oxlint
npm install --save-dev oxlint
 
# 2. 运行并查看差异
npx oxlint src/ --format json > oxlint-results.json
 
# 3. 对比 ESLint 和 Oxlint 的规则覆盖
# 使用 oxlint 的 ESLint 规则映射
npx oxlint src/ --eslint-config .eslintrc.json

编辑器集成

编辑器插件
VS Codeoxc.oxc-vscode
Cursor兼容 VS Code 插件
Zed内置 OXC 支持
IntelliJoxc-intellij-plugin
Neovim通过 LSP 或 null-ls 集成

性能与安全

性能数据

场景数据对比
Oxlint vs ESLint615ms vs 33.5s50-100x 更快
Oxfmt vs Prettier30x 更快
Oxfmt vs Biome首次运行无缓存3x 更快
Resolver vs enhanced-resolve28x 更快
解析器 vs SWC~3x 更快
Node.js 仓库 lintESLint 1:43 → Oxlint 21s4.8x(含插件)
Airbnb 126,000+ 文件7 秒实际案例
Mercedes-Benzlint 时间减少 71%实际案例

性能优化建议

  1. 使用独立二进制:直接安装 oxlint 二进制比通过 npm 包更快
  2. 合理配置规则:禁用不需要的规则类别(如 nurseryrestriction
  3. 增量 Linting:在 CI 中使用 --fix 结合缓存减少重复工作
  4. 并行处理:Oxlint 自动利用多核 CPU 并行处理文件
  5. 类型感知 Linting 谨慎使用:类型感知规则需要加载 TypeScript 类型信息,速度较慢

安全注意事项

  • 输入验证:OXC 的 Rust 实现天然具有内存安全优势
  • 插件安全:Oxlint JS 插件在沙箱中运行
  • 依赖审计:Rust 依赖通过 cargo audit 检查
  • Unicode 处理:WTF-8 编码处理需要注意跨平台一致性

技术对比

与同类工具的详细对比

维度OXCSWCBabelesbuild
实现语言RustRustJavaScriptGo
定位完整工具链编译器编译器编译器 + 打包器
Linter✅ Oxlint(一流)❌(ESLint 独立)
Formatter✅ Oxfmt❌(Prettier 独立)
Resolver✅(28x 更快)⚠️ 有限
解析器速度~3x SWC
TypeScript✅ 剥离类型✅ 剥离类型✅ 剥离类型✅ 剥离类型
类型检查❌(通过 tsgo 支持感知)
插件系统发展中✅ Wasm✅ 最丰富⚠️ 有限
打包能力✅(通过 Rolldown)
框架集成Vite 8、RolldownNext.js、ParcelWebpack、RollupVite (dev)、Angular
npm 周下载量~1030 万(parser)~3950 万~6.5 亿~2.37 亿
维护模式VoidZero/Cloudflare团队 + 社区赞助3 人 + 机构赞助单人 BDFL
版本状态各组件独立版本v1.15+v8.0+仍 0.x

与 SWC 的对比

维度OXCSWC
定位模块化高性能工具集综合性编译器平台
Linter✅ Oxlint(50-100x faster)❌ 无对标产品
Formatter✅ Oxfmt(30x faster)❌ 无对标产品
解析器速度~3x SWC
整体转换成熟度仍在追赶成熟稳定
插件生态发展中(JS 插件 Alpha)已有成熟的 Wasm 插件生态
框架集成Vite/Rolldown 核心Next.js 核心
维护者Boshen Chen(VoidZero/Cloudflare)Donny 강동윤
优势场景Linting、格式化、Vite 工作流成熟框架(Next.js 等)

何时选择 OXC

  • 需要极速 Linting 替代 ESLint → Oxlint
  • 需要极速格式化替代 Prettier → Oxfmt
  • Vite 8 / Rolldown 项目 → 自动使用 OXC
  • Rust 项目中的 JS 处理 → OXC crates
  • 追求完整工具链统一 → OXC 全家桶

何时考虑替代方案

  • 需要成熟的编译器插件生态 → Babel
  • Next.js 项目 → SWC(默认集成)
  • 需要打包器但不用 Vite → esbuild 或 Webpack

最佳实践

从 ESLint 迁移到 Oxlint

  1. 并行运行:先同时运行 ESLint 和 Oxlint,对比规则覆盖差异
  2. 规则映射:使用 Oxlint 的 ESLint 规则映射功能确认覆盖率
  3. 渐进替代:逐步关闭 ESLint 规则,确认 Oxlint 输出一致
  4. JS 插件:对于 ESLint 自定义规则,使用 Oxlint 的 JS 插件支持
  5. CI 集成:在 CI 中先用 Oxlint 加速,保留 ESLint 作为兜底

常见陷阱

  1. AST 形状差异:OXC 的 AST 形状与 Babel AST 存在差异,迁移自定义 Babel 插件时需注意
  2. 规则覆盖不完整:Oxlint 的 800+ 规则虽然多,但仍有一些 ESLint 社区规则未覆盖
  3. 格式化兼容性:Oxfmt 虽通过 Prettier 一致性测试,但某些极端格式可能有差异
  4. 版本碎片化:OXC 各组件独立版本(oxlint、oxfmt、oxc crates),需注意兼容性
  5. 类型感知 Linting 性能:启用类型感知规则会显著降低 lint 速度

生产环境推荐配置

{
  "rules": {
    "no-unused-vars": "error",
    "no-debugger": "error",
    "no-duplicate-case": "error",
    "no-empty": "error",
    "no-constant-condition": "warn",
    "typescript/no-explicit-any": "warn",
    "typescript/no-unused-vars": "error",
    "react-hooks/rules-of-hooks": "error"
  },
  "categories": {
    "correctness": "error",
    "suspicious": "warn"
  }
}

技术局限与边界

已知限制

  • 编译器成熟度:相比 SWC 和 Babel,OXC 的转换器仍在追赶成熟度
  • 插件生态年轻:JS 插件处于 Alpha 阶段,约 80% 的 ESLint 插件可迁移
  • 公共 API 不稳定:OXC Rust crates 的 API 仍在快速变化
  • 社区规模:相比 Babel 和 SWC,OXC 的用户基数和生态规模较小
  • 文档完善度:文档不如 Babel 和 SWC 完善,学习曲线较陡
  • 格式兼容性:Oxfmt 虽然通过一致性测试,但与 Prettier 的某些边缘行为可能有差异

不适用场景

  • 深度依赖 Babel 插件生态的项目 → 继续使用 Babel
  • Next.js 项目 → 使用内置 SWC
  • 需要稳定公共 API 的 Rust 集成 → 等待 OXC 1.0
  • 需要最早支持 TC39 提案 → Babel
  • 对 Babel AST 兼容性有严格要求 → SWC

Q3 2026 路线图

方向负责人内容
Vite 7→8 迁移阻塞项DunqingECMA 装饰器、minifier 属性混淆、WTF-8 修复
3x 解析器性能overlookmotel基于 SIMD 的 JS 词法分析
TypeScript 7 类型感知camc314同步 tsgo 实现,解决性能和内存问题
Oxfmt 完全 Rust 化leaysgur去除 Prettier 依赖,全 Rust 原生
OXC 走向 1.0camc314稳定 API 和 AST 形状
Rust 版 React CompilerBoshen去除 Babel AST 中间层,性能提升 2x

学习资源

2026 年现状

最新版本

  • oxlint v1.73.0(2026 年 7 月)
  • oxfmt v0.58.0(2026 年 6 月)
  • oxc crates v0.139.0

发展趋势

  1. 前端工具链新基础设施:OXC 正在成为 Vite 生态的核心编译基础设施,影响力持续扩大
  2. Cloudflare backing:VoidZero 被 Cloudflare 收购后,OXC 获得了强大的组织支撑
  3. 工具链统一趋势:越来越多的开发者倾向于使用 OXC 全家桶替代分散的 ESLint + Prettier + Babel
  4. Rust 工具链成熟:从解析器、转换器到 Linter、Formatter,OXC 的全栈 Rust 方案日趋成熟
  5. 企业采用加速:Shopify、Airbnb、Mercedes-Benz、ByteDance 等大型企业已采用 OXC

2025-2026 重要里程碑

时间里程碑
2025 年 3 月Oxlint Beta 发布
2025 年 6 月Oxlint 1.0 稳定版(500+ 规则)
2025 年 6 月VoidZero 被 Cloudflare 收购
2025 年 11 月Oxfmt Alpha
2025 年 12 月Vite 8 Beta(集成 Rolldown)
2025 年 12 月类型感知 Linting Alpha(基于 tsgo)
2026 年 2 月Oxfmt Beta
2026 年 3 月Vite 8.0 稳定版发布
2026 年 3 月Oxlint JS 插件 Alpha(~80% ESLint 可迁移)
2026 年 6 月oxlint v1.72.0 / oxfmt v0.56.0
2026 年 7 月oxlint v1.73.0 / oxfmt v0.58.0

社区活跃度

指标数值
GitHub Stars~21,900
总提交数18,881+
贡献者200+
oxc-parser npm 周下载量~1030 万
oxlint npm 周下载量~670 万
发布频率每周多次
组织支撑VoidZero / Cloudflare

总体评价

OXC 是 2025-2026 年前端工具链领域最引人注目的新兴力量。它通过 Rust 实现了全面超越现有工具的性能,并以模块化设计提供了灵活的工具链组合能力。Oxlint 1.0 的稳定发布和 Oxfmt 的快速发展表明,OXC 正在从"编译器引擎"进化为"完整工具链平台"。VoidZero 被 Cloudflare 收购为项目提供了长期保障,而 Vite 8 的采用则将 OXC 推向了数百万前端开发者的日常工作流中。

OXC 的核心竞争力在于性能统一性——用一套 Rust 工具链替代多个分散的 JavaScript 工具,同时获得数量级的速度提升。对于新项目,OXC 全家桶(Oxlint + Oxfmt + Rolldown)是值得认真考虑的选择;对于现有项目,渐进式从 ESLint → Oxlint、Prettier → Oxfmt 迁移可以立即获得显著的效率提升。