扫一扫分享
Oxc 是用 Rust 编写的 JavaScript 语言的高性能工具集合。他们的目标是构建 JavaScript 的基本编译器工具:解析器、linter、格式化程序、转译器、压缩器和解析器等等。
Oxlint 是一个由 Rust 编写的新一代 JavaScript linter,旨在帮助开发者捕获错误或无用的代码,默认情况下不需要任何配置。
性能:处理代码的速度比 ESLint 快 50-100 倍。
安全:Rust 的内存安全保证消除了某些类别的错误。
兼容性:目前内置了超过 200 条规则,且列表还在不断增加,来自 eslint、typescript、eslint-plugin-react、eslint-plugin-jest、eslint-plugin-unicorn 和 eslint-plugin-jsx-a11y;支持 .eslintignore 以及 ESLint 的注释忽略规则。
但是对于取代 Eslint ,官方的回答是:现阶段,oxlint 无意完全取代 ESLint,当 ESLint 的缓慢成为你工作流程中的瓶颈时,它可以作为增强功能。
为了更快的反馈循环,官方建议在 lint 阶段或 CI 设置中的 ESLint 之前运行 oxlint,在大型代码仓库上运行只需要几秒钟。
要在 JavaScript / TypeScript 代码库中测试 oxlint,我们只需在存储库的根目录中执行以下命令:
npx oxlint@latest // npm
pnpm dlx oxlint@latest // pnpm
yarn dlx oxlint@latest // yarn
bunx oxlint@latest // bun
deno run oxlint@latest // deno
在现实场景中,Shopify 报告称,他们原来需要 75 分钟的 ESLint 运行时间现在仅需 10 秒。
来自有 Shopify 研发经验的 Preact 创建者 Jason Miller 的描述:Oxlint 对我们在 Shopify 的应用是一个巨大的成功。我们以前的 lint 设置运行需要75分钟,所以我们在 CI 上配置了 40 多个工作节点。而相比之下,Oxlint 在单个工作节点上对同样的代码库进行 lint 检查只需要大约 10 秒,而且输出的结果更易于解读。在我们迁移时,我们甚至发现了一些被我们旧设置隐藏或跳过的错误!
大部分性能提升来自于 Oxlint 被专门设计用于提高性能,而 Rust 和并行处理是其中的关键因素。
根据在不同项目中的实际测试,linter 的速度至少比 ESLint 快 50 倍以上,并且性能随着 CPU 核心数量的增加而继续提升。
Oxc 维护自己的 AST 和解析器,这是迄今为止用 Rust 编写的最快且最符合 JavaScript 和 TypeScript(包括 JSX 和 TSX)解析器。
由于解析器通常是 JavaScript 工具中的关键性能瓶颈,因此任何微小的改进都可能对我们的下游工具产生连锁效应。通过开发我们的解析器,我们有机会探索和实施经过深入研究的性能技术。
虽然许多现有的 JavaScript 工具依赖estree作为其 AST 规范,但一个显着的缺点是它存在大量不明确的节点。这种歧义常常会导致在estree开发过程中出现混乱。
Oxc AST 与estree AST 略有不同,删除了不明确的节点并引入了不同的类型。例如,Oxc AST不使用通用estree ,而是提供特定类型,例如、和。这种明显的区别通过更紧密地与 ECMAScript 规范保持一致,极大地增强了开发体验。
手机预览