Skip to content

Oxfmt Beta

我们很高兴宣布,Oxfmt 已进入测试版。

Oxfmt 是一个基于 Rust 构建、兼容 Prettier 的代码格式化工具,专为 JavaScript 生态系统设计。它旨在实现与现代开发工具的完全兼容性,同时大幅提升性能。

在基准测试中,Oxfmt 在首次运行(无缓存)时比 Prettier 快超过 30 倍,比 Biome 快 3 倍。查看完整的 基准测试结果

自去年十二月的 alpha 版发布以来,我们已扩展支持更多文件格式,增加了嵌入式语言格式化功能,引入了导入排序功能,集成了 Tailwind CSS 支持,并带来了大量稳定性与兼容性改进。

Oxfmt 已在生态系统中获得广泛采用。使用 Oxfmt 的项目包括:openclaw/openclawvuejs/corevercel/turborepohuggingface/huggingface.jsgetsentry/sentry-javascriptnpmx-dev/npmx.dev 以及更多项目。

快速入门

oxfmt 安装为开发依赖项:

sh
pnpm add -D oxfmt

package.json 中添加脚本:

package.json
json
{
  "scripts": {
    "fmt": "oxfmt",
    "fmt:check": "oxfmt --check"
  }
}

格式化文件:

sh
pnpm run fmt

检查格式但不写入文件:

sh
pnpm run fmt:check

从 Prettier 迁移

通过单条命令完成安装、配置迁移和重新格式化:

sh
pnpm add -D oxfmt && pnpm oxfmt --migrate prettier && pnpm oxfmt

有关完整的迁移指南,请参阅 从 Prettier 迁移

AI 迁移提示

或者,您可以将以下提示复制到您的 AI 编程助手,以迁移您的项目:

按照 https://oxc.rs/docs/guide/usage/formatter.html 将此项目从 Prettier 迁移到 Oxfmt:
1. 安装 oxfmt 并运行 `oxfmt --migrate prettier`
2. 更新 package.json 脚本以使用 oxfmt
3. 更新 CI 工作流以使用 `oxfmt --check`
4. 更新 lint-staged 以使用 `oxfmt --no-error-on-unmatched-pattern`
5. 运行 oxfmt 以重新格式化所有文件
6. 卸载 prettier 及相关包
7. 更新编辑器设置以使用 oxfmt
8. 如果 CONTRIBUTING.md、AGENTS.md 或 CLAUDE.md 中提到 prettier,也请一并更新

如需更详细的说明,请参阅 Oxfmt 文档

Alpha 版本以来的新功能亮点

100% 兼容 Prettier

Oxfmt 现已通过 100% 的 Prettier JavaScript 与 TypeScript 合规性测试。对于少数仍存在的格式差异,我们已向 Prettier 团队 报告问题,并与他们合作推动行为趋同。

这意味着您可以放心地从 Prettier 迁移到 Oxfmt,代码格式将保持一致。如果您发现未覆盖的情况,请 提交报告

支持更多文件格式

Oxfmt 现在支持格式化以下语言和文件类型:JavaScript、JSX、TypeScript、TSX、JSON、JSONC、JSON5、YAML、TOML、HTML、Angular、Vue、CSS、SCSS、Less、Markdown、MDX、GraphQL、Ember 以及 Handlebars。这意味着您可以在整个项目中使用单一格式化工具。

Tailwind CSS 集成

对 JS/TS 与非 JS/TS 文件均支持自动 Tailwind CSS 类名排序prettier-plugin-tailwindcss 的功能已内置,无需再单独安装该插件。

导入排序

现提供内置的 导入排序,支持可配置选项:

  • ignoreCase - 忽略大小写的排序
  • sortSideEffects - 排序副作用导入
  • newlinesBetween - 控制导入组之间的空白行
  • groups - 自定义排序分组顺序
  • customGroups - 定义自定义分组规则

更多选项请参见 完整参考文档

package.json 字段排序

自动 package.json 字段排序 默认启用,确保您的 package.json 文件始终保持一致的组织结构。

嵌入式语言格式化

支持在模板字面量中格式化嵌入的代码内容:

  • 支持 styled-components 风格语法、styled-jsx 和 CSS prop
  • 支持 Angular 的 @Component 模板与样式

Node.js API

现已提供程序化 API:

ts
import { format, type FormatOptions } from "oxfmt";

const input = `let a=42;`;
const options: FormatOptions = {
  semi: false,
};

const { code } = await format("a.js", input, options);
console.log(code); // "let a = 42"

CLI 变更

  • --init - 初始化新配置文件
  • --migrate prettier - 从 Prettier 配置迁移
  • --migrate biome - 从 Biome 配置迁移
  • --stdin-filepath - 指定标准输入的文件路径
  • 支持通配符模式展开 - oxfmt './packages/**/*.{js,jsx}'

配置变更

编辑器支持

Oxfmt 支持所有主流编辑器:VS Code、Cursor、Zed、IntelliJ IDEA、WebStorm、Neovim,以及任何支持 LSP 的编辑器。

发布路线图

我们正持续改进 Oxfmt,以迈向稳定版本:

  • 支持 Prettier 插件
  • 提升 xxx-in-js 格式化表现
  • 提高稳定性
  • 性能优化

下一步

请参阅 Oxfmt 文档 中的完整安装指南。

报告问题

关于格式差异,请参考 格式差异讨论帖

加入社区

我们非常期待听取您对 Oxfmt 的反馈。欢迎联系我们: