Oxfmt Beta
我们很高兴宣布,Oxfmt 已进入测试版。
Oxfmt 是一个基于 Rust 构建、兼容 Prettier 的代码格式化工具,专为 JavaScript 生态系统设计。它旨在实现与现代开发工具的完全兼容性,同时大幅提升性能。
在基准测试中,Oxfmt 在首次运行(无缓存)时比 Prettier 快超过 30 倍,比 Biome 快 3 倍。查看完整的 基准测试结果。
自去年十二月的 alpha 版发布以来,我们已扩展支持更多文件格式,增加了嵌入式语言格式化功能,引入了导入排序功能,集成了 Tailwind CSS 支持,并带来了大量稳定性与兼容性改进。
Oxfmt 已在生态系统中获得广泛采用。使用 Oxfmt 的项目包括:openclaw/openclaw、vuejs/core、vercel/turborepo、huggingface/huggingface.js、getsentry/sentry-javascript、npmx-dev/npmx.dev 以及更多项目。
快速入门
将 oxfmt 安装为开发依赖项:
pnpm add -D oxfmt在 package.json 中添加脚本:
{
"scripts": {
"fmt": "oxfmt",
"fmt:check": "oxfmt --check"
}
}格式化文件:
pnpm run fmt检查格式但不写入文件:
pnpm run fmt:check从 Prettier 迁移
通过单条命令完成安装、配置迁移和重新格式化:
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:
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}'
配置变更
overrides- 为特定文件模式应用不同选项insertFinalNewline- 控制结尾换行符- 支持 .editorconfig 中的
insert_final_newline配置
编辑器支持
Oxfmt 支持所有主流编辑器:VS Code、Cursor、Zed、IntelliJ IDEA、WebStorm、Neovim,以及任何支持 LSP 的编辑器。
发布路线图
我们正持续改进 Oxfmt,以迈向稳定版本:
- 支持 Prettier 插件
- 提升 xxx-in-js 格式化表现
- 提高稳定性
- 性能优化
下一步
请参阅 Oxfmt 文档 中的完整安装指南。
报告问题
关于格式差异,请参考 格式差异讨论帖。
加入社区
我们非常期待听取您对 Oxfmt 的反馈。欢迎联系我们:
- Discord:加入我们的 社区服务器 参与实时讨论
- GitHub:在 Formatter RFC 中分享您的意见
- 问题追踪:在我们的 问题追踪器 上报告错误或提出功能需求



