做前端的谁没被工具链折磨过?
Prettier 格式化大项目等到怀疑人生,CI 里跑一遍格式检查要几分钟;ESLint 配置复杂到像写遗嘱,.eslintrc、.eslintignore、十几个插件、版本冲突家常便饭;前几天我写了篇 Biome 的测评,以为 Biome 够快了,但评论区有人推荐了另一个性能怪兽——Oxc。
一查才发现,这玩意来头不小:Vue.js 和 Vite 作者尤雨溪创立的 VoidZero 公司出品,用 Rust 重写的一整套 JavaScript 工具链,从解析、转换、压缩到 Lint、格式化全覆盖。官网原话:"50~100x faster than ESLint",实测格式化比 Prettier 快 30 倍,比 Biome 快 3 倍,解析比 SWC 快 3 倍,安装包体积却只有 SWC 的 1/18。
更狠的是,Vite 8 已经全面拥抱 Oxc——Rolldown 做打包器,Oxc 做解析和转换,esbuild 被彻底踢出局。这不是"又一个快一点的工具",这是前端工具链的"Rust 统一革命"。
今天,就带大家拆解这个 Vite 团队背后的性能核武器,看完你会明白为什么大厂都在偷偷迁移。
一、暴击对比!Oxc vs ESLint + Prettier + SWC + Biome,差距大到离谱
先上最直观的对比表,没有花哨宣传,全是官网和实测的硬核数据——
| 对比指标 | ESLint + Prettier + SWC | Biome | Oxc | 优势亮点 |
|---|---|---|---|---|
| 底层语言 | JavaScript/Node.js + Go | Rust | Rust | 无 GIL 瓶颈,内存安全 |
| Lint 速度 | 基准参考 | ~15x 于 ESLint | 50~100x 于 ESLint | 2000 文件从 24 秒变 0.4 秒 |
| 格式化速度 | 基准参考 | ~35x 于 Prettier | 30x 于 Prettier,3x 于 Biome | CI 格式化从分钟变秒 |
| 解析速度 | SWC 84ms | — | Oxc 26ms(3x 快于 SWC) | 增量构建瓶颈直接消失 |
| 转换速度 | SWC 193ms / esbuild 180ms | — | Oxc 47ms(4x 于 SWC) | 万文件转换 47 毫秒 |
| 安装体积 | SWC 37MB | ~10MB | Oxc 2MB | 18 倍体积差距 |
| 规则数量 | ESLint 核心 + 插件拼凑 | 450+ 内置规则 | 700+ 内置规则,持续增加 | 原生实现,无需插件 |
| 配置复杂度 | .eslintrc + .prettierrc + ... | biome.json 一个文件 | .oxlintrc.json 一个文件 | 零配置也能开箱即用 |
| Prettier 兼容 | 100% | 97% 兼容 | Oxfmt 100% 通过 Prettier 兼容性测试 | 迁移零成本 |
| ESLint 插件 | 4000+ 插件生态 | 不支持 | JS Plugins Alpha 支持现有插件 | 80% 项目可直接切换 |
| 类型感知 Lint | 需 typescript-eslint + tsc | 支持 | True type-aware by tsgo | 原生类型感知,不拖慢 |
| 模块解析 | enhanced-resolve | — | 28x faster,行为对齐 | Monorepo 依赖解析飞起 |
| 转换/压缩 | esbuild/SWC | — | 内置 Transformer + Minifier | 一条流水线,不用拼接 |
| 语言支持 | JS/TS/JSX + 插件扩展 | JS/TS/JSX/JSON/CSS/GraphQL | JS/TS/JSX/JSON/YAML/TOML/HTML/Vue/Angular/CSS/SCSS/Less/MD/MDX/GraphQL/Ember/Handlebars | 一个工具覆盖全项目 |
一句话总结:Oxc = ESLint 的规则深度 + Prettier 的兼容度 + Biome 的 Rust 速度 + SWC 的解析能力 + Vite 团队的生态背书,不做取舍,全都给你!
二、硬核拆解:Oxc 凭什么让 Vite 8 彻底换芯?
Oxc 全称 Oxidation Compiler(氧化编译器,玩了个 Rust 的梗——氧化生锈),它不是"又一个 Lint 工具",而是 从 Parser 到 Minifier 的完整工具链矩阵。每个模块都可以单独使用,也可以组合成流水线。
1. Parser:比 SWC 快 3 倍的"解析器之王"
Parser 是所有工具链的地基。Oxc 的解析器在 Macbook Pro M3 Max 上解析 TypeScript 编译器的 checker.ts(约 3.9MB)仅需 26.3ms,而 SWC 需要 84.1ms,Babel 需要 853ms,TypeScript 自身解析器需要 293ms。
为什么能快 3 倍?Oxc 用了更激进的 Arena 内存分配策略,减少堆分配压力,并且在现代 ARM/x86-64 处理器上充分利用 SIMD 指令做字符串扫描。对于大型代码库的增量构建,每次文件变更都需要重新解析变更文件及其受影响导入——解析速度就是瓶颈,Oxc 把这个瓶颈直接干没了。
更关键的是,它通过了所有 Test262 stage4 测试,支持 .js(x) 和 .ts(x),解析质量完全放心。
2. Transformer:10,000 文件转换只要 47 毫秒
Oxc Transformer 在 M3 Max 上将 10,000 个 TypeScript + JSX 文件转换为 ESM 仅需 47ms。对比:SWC 193ms,esbuild 180ms,Babel 22 秒。
功能上覆盖 TypeScript & JSX 转换、语法降级到 ES2015、独立声明 DTS 输出、React Fast Refresh、styled-components 支持——Babel 能干的他都能干,速度快了 400 倍。
3. Oxlint:50~100 倍速的"ESLint 终结者"
这是 Oxc 最出圈的模块。官网数据:680 个文件、88 条规则、10 线程,45 毫秒完成。ESLint 跑同样的任务要几十秒。
规则数量已经突破 700+,覆盖 ESLint 核心、typescript-eslint、react、react-hooks、react-refresh、unicorn、import、jsx-a11y、jest、vitest、vue 等主流插件生态。今年 3 月发布的 JS Plugins Alpha 更是杀手锏——支持直接运行现有 ESLint 插件,测试通过率:ESLint 内置规则 33,006 条测试 100% 通过,React Hooks 5,007 条 100% 通过,Testing Library 17,016 条 100% 通过。官方放话:80% 的 ESLint 用户现在可以直接切换到 Oxlint。
Shopify 的 Jason Miller(Preact 作者)实测:之前的 Lint 配置要 75 分钟,还要拆成 40+ 个 CI worker 并行。oxlint 单 worker 10 秒跑完,还抓到了以前漏掉的 bug。
4. Oxfmt:100% Prettier 兼容,比 Biome 还快 3 倍
2 月 24 日刚进入 Beta 的格式化工具,100% 通过 Prettier 的 JavaScript 和 TypeScript 兼容性测试。不是"差不多",是官方认证的 100%。
速度上比 Prettier 快 30 倍,比 Biome 快 3 倍。支持的语言多到离谱:JavaScript、TypeScript、JSX、TSX、JSON、YAML、TOML、HTML、Vue、Angular、CSS、SCSS、Less、Markdown、MDX、GraphQL、Ember、Handlebars——一个格式化工具覆盖整个项目。
内置 Tailwind CSS 类名排序、import 排序、package.json 字段排序,以前要装一堆 Prettier 插件的事,现在开箱即用。
5. Resolver:28 倍速的模块解析
oxc-resolver 对标 Webpack 的 enhanced-resolve,行为完全对齐,但速度快了 28 倍。Nova、swc-node、knip 已经在用。Monorepo 里那种"找依赖找到天荒地老"的场景,直接秒解。
6. Minifier:Alpha 阶段的压缩器
死代码消除、语法缩短、变量名混淆——虽然还在 Alpha,但 Rolldown 已经在用 Oxc 做转换和压缩了。
三、生态背书:这不是野路子,是 Vite 团队的"亲儿子"
看一个开源项目靠不靠谱,看谁在用它:
- Vite 8:全面使用 Rolldown + Oxc,构建速度提升 10~30 倍
- Rolldown:Vite 的官方打包器,解析、转换、压缩全用 Oxc
- Nuxt:用 Oxc 做解析
- Vue 3 核心库:尤雨溪亲自跑 oxlint,590 个文件 50 毫秒
- Shopify/Preact:生产环境全面替换 ESLint
- ByteDance、Shopee:用 oxlint 做代码检查
- Sentry、Vercel/Turborepo、HuggingFace:用 oxfmt 做格式化
- Midjourney、Posthog、Outline、Actual:生产环境使用 oxlint
StackBlitz CEO Eric Simons 的评价很到位:Oxc 现在被低估了,未来几年大部分 JS/TS 工具链都会用它。
Moonrepo 作者 Miles Johnson 更直接:选 Rust 赌对了,oxlint 不仅快,用起来还简单。
四、Vite 8 换芯真相:为什么尤雨溪要押注 Oxc?
Vite 8 最大的变化不是新 API,而是底层全面 Rust 化——Rolldown 替换 Rollup/esbuild,Oxc 替换 esbuild 的解析和转换。
实际收益:
- Linear:构建时间从 46 秒降到 6 秒
- Ramp:构建时间减少 57%
- 其他早期采用者:38%~64% 的性能提升
更重要的是开发/生产一致性。以前 Vite 开发时用 esbuild,生产用 Rollup,两套管道偶尔会出现"开发正常,生产报错"的诡异 bug。现在 Rolldown + Oxc 统一了整条流水线,从根本上消灭这类问题。
VoidZero 的野心不止于此——Vite+ 正在把 Vite、Vitest、Oxlint、Oxfmt、Rolldown 统一到一个 CLI 里,做成"前端工具链的 iOS 生态":一个团队维护,所有工具无缝协作,共享同一个 Parser,不用重复解析 AST。
五、3 步上手:一分钟体验"光速 Lint"
Oxc 支持全平台,安装极简:
1. 安装 Oxlint
npm install -D oxlint
# 或直接用 npx
npx oxlint@latest .
2. 初始化配置(可选,零配置也能跑)
npx oxlint --init
生成的 .oxlintrc.json:
{
"$schema": "./node_modules/oxlint/configuration_schema.json",
"plugins": ["react", "typescript"],
"rules": {
"no-unused-vars": "error",
"no-console": "warn"
}
}
3. 一条命令,光速检查
# 开发时:检查并自动修复
npx oxlint . --fix
# CI 时:只检查不修改
npx oxlint . --deny-warnings
从 ESLint 迁移?
npx oxlint --migrate eslint
自动读取你的 .eslintrc 并转换配置。如果有些规则 Oxlint 还没支持,可以双轨并行——Oxlint 跑原生支持的规则(毫秒级),ESLint 跑剩余规则,用 eslint-plugin-oxlint 自动禁用重叠规则,避免重复报错。
六、Oxc 的真正意义:前端工具链的"统一革命"
很多人看到 Oxc,第一反应是"快",但它真正的价值,远不止"速度快"这么简单。
它用事实证明了:前端工具链不需要拼拼凑凑,一个 Rust 写的统一工具矩阵就能覆盖所有需求;它打破了"格式化用 Prettier、检查用 ESLint、打包用 esbuild、解析用 SWC"的碎片化困境,给前端开发者提供了一个"高性能 + 一体化 + 零配置"的标准答案。
- 普通开发者:终于不用再维护一堆配置文件,
npx oxlint和npx oxfmt两条命令搞定所有代码质量 - 团队 Leader:CI 时间从分钟变秒,Monorepo 统一规范,新人零成本上手
- 大型项目:2000 文件 Lint 从 24 秒变 0.4 秒,万文件转换 47 毫秒
- Vite 用户:Vite 8 已经内置,享受无缝升级
- 技术学习者:读懂 Oxc,吃透 Rust 工具链、AST 处理、类型感知 Lint 三大硬核能力
目前 Oxc 已全面生产就绪(MIT 协议),个人/商用完全免费。这已经不是"另一个 Lint 工具",它是为现代前端开发量身打造的统一代码质量基础设施。
官方网站:oxc.rs
赶紧试试 Oxc,体验什么叫 一条命令,代码质量全搞定!
你平时最受不了工具链的什么痛点?评论区聊聊~
各位互联网搭子,要是这篇文章成功引起了你的注意,别犹豫,关注、点赞、评论、分享走一波,让我们把这份默契延续下去,一起在前端的海洋里乘风破浪!