Skip to content

Formatter(oxfmt)

我们正将 Prettier 与 Biome Formatter 移植到 Oxc,以构建高性能、兼容 Prettier 的格式化器。

架构概览

Oxc formatter 与 Prettier 一脉相承,同时做了大量性能优化:

  • 文档模型:沿用 Prettier/Biome 的 document IR(中间表示)
  • 美观输出:实现 Wadler 的美观打印算法
  • 与 AST 协同:结合 Oxc 解析器获得最佳性能

性能考量

优化思路

  • 内存池(Arena):AST 存放在 bump allocator 中
  • 字符串驻留:复用常见字符串
  • 惰性求值:推迟昂贵计算

当前难点

工程挑战

  1. 注释:保留注释位置与风格
  2. JS 怪癖:处理语法边界情形
  3. 性能与兼容:速度与与 Prettier 输出一致之间的平衡
  4. 内存:大文件的高效处理

尚缺特性

  • 插件系统兼容
  • 配置文件支持
  • 编辑器集成
  • CLI 工具
  • Language Server Protocol