什么是 unifast?

unifast 是一款基于 Rust 核心的高性能 Markdown 与 MDX 编译器,内置 GFM、净化、高亮、目录等处理阶段。

unifast 是一款基于 Rust 核心的高性能 Markdown 与 MDX 编译器。它通过内置处理阶段直接实现了 remark/rehype 的主流使用场景,而不是通过 JS 插件兼容层来实现。

为什么选择 unifast?

unified/remark/rehype 等传统 Markdown 工具链虽然功能强大,但也存在一些折衷:

  • 性能开销 —— 多次 JS AST 转换会不断累积,在大规模场景下尤为明显。

  • 插件协作 —— 数十个插件之间的执行顺序、兼容性和功能重叠都需要协调。

  • 缺少内置能力 —— 即便是 GFM 或净化这类基础功能,也需要额外安装独立的包。

unifast 采用了不同的思路:

  • Rust 核心 —— 解析、转换和输出全部在原生代码中完成。

  • 内置处理阶段 —— 常用特性(GFM、净化、高亮、目录)作为内置能力直接提供,而非外挂叠加。

  • 一次编译 —— 一次函数调用即可完成从 Markdown 到 HTML 的全部特性处理。

核心特性

特性描述
CommonMark + GFM表格、任务列表、删除线、自动链接、脚注
Frontmatter支持 YAML、TOML 和 JSON 元数据提取
MDX在 Markdown 中使用 JSX 表达式和 import
诊断信息精确的错误范围,带有行列位置映射

内置处理阶段

常用的 remark/rehype 插件被重新实现为原生 Rust 处理阶段。无需 npm install,也不用为执行顺序发愁。

处理阶段描述
净化基于 schema 的 HTML 允许列表,提供安全默认值
语法高亮可插拔的引擎(syntect、Shiki)
目录自动提取标题生成目录树

平台支持

unifast 基于单一的 Rust 核心,可运行在多个平台上:

  • @unifast/node —— 通过 N-API(napi-rs)提供的 Node.js 绑定。主要目标平台。

  • @unifast/core —— 在所有包之间共享的 TypeScript 类型定义。

  • unifast(CLI) —— 面向脚本和 CI 的命令行接口。

  • WASM —— 浏览器和边缘运行时支持(次要目标平台)。

非目标

unifast 并非 unified 的直接替代品。它不提供以下能力:

  • 在核心中执行现有的 remark/rehype JS 插件。

  • 与 unified 生态系统保持 API 兼容。

  • 在核心编译路径中依赖 Node 的模块解析机制。

与之相对,unifast 追求的是使用场景的完备性 —— 覆盖绝大多数项目的实际需求,而不必费心组装一条插件流水线。