Formatter(oxfmt)
我们正将 Prettier 与 Biome Formatter 移植到 Oxc,以构建高性能、兼容 Prettier 的格式化器。
架构概览
Oxc formatter 与 Prettier 一脉相承,同时做了大量性能优化:
- 文档模型:沿用 Prettier/Biome 的 document IR(中间表示)
- 美观输出:实现 Wadler 的美观打印算法
- 与 AST 协同:结合 Oxc 解析器获得最佳性能
性能考量
优化思路
- 内存池(Arena):AST 存放在 bump allocator 中
- 字符串驻留:复用常见字符串
- 惰性求值:推迟昂贵计算
当前难点
工程挑战
- 注释:保留注释位置与风格
- JS 怪癖:处理语法边界情形
- 性能与兼容:速度与与 Prettier 输出一致之间的平衡
- 内存:大文件的高效处理
尚缺特性
- 插件系统兼容
- 配置文件支持
- 编辑器集成
- CLI 工具
- Language Server Protocol