首页 > 资讯 > Astro 推出 Sätteri:Rust 驱动的 Markdown 与 MDX 处理器,构建速度最高提升 60%

Astro 推出 Sätteri:Rust 驱动的 Markdown 与 MDX 处理器,构建速度最高提升 60%

InfoQ 2026-09-04 12:07 1 阅读 查看原文

Astro 团队推出的 Sätteri 是一款面向 JavaScript 生态系统的全新高性能 Markdown 和 MDX 处理器,现已成为最新发布的 Astro 7.0 的核心组件。它采用 Rust 编写,由 Astro 核心贡献者 ErikaBruits 协作团体独立维护。Sätteri 虽独立于 Astro 组织之外,但已成为该框架的核心依赖组件。开发团队表示,它可使构建速度提升高达 60%。

Sätteri 在高性能 Rust Markdown 和 MDX 引擎之上提供了灵活的 JavaScript 插件系统,使用 pulldown-cmark 进行 CommonMark 解析,使用 Oxc 进行 MDX 表达式解析。它附带平台专属的原生二进制文件,并提供 WASM 回退方案——这与 Astro 新版 Rust 编译器所采用的实现思路一致。用户还可以通过 WebAssembly 在浏览器中直接在线体验

该处理器最初作为可选的 @astrojs/markdown-satteri 包出现在 Astro 6.4 中,在 Astro 7 中则被设置为默认选项。最突出的优势就是速度:将 Astro 和 Cloudflare 文档站点切换到 Sätteri 后,每次构建时间缩短了一分钟以上,Astro 7 的整体构建速度提升了 15% 至 61%。大部分性能提升来自于将解析工作移出 JavaScript,取代了之前基于 unified 的 remark、rehype 及一长串依赖项的管道——这些插件需要逐个遍历完整的语法树。

速度并非唯一的改进。Sätteri 原生实现了许多之前需要单独插件才能实现的功能,包括 GitHub 风格 Markdown、智能标点、容器指令、数学公式、前置元数据、上标、下标和维基链接。可选功能可通过处理器配置进行开启。

Hacker News 上,一位开发者表达了自己的失望:

仅仅为了构建速度的提升,就从广泛支持的 unified/rehype 迁移到不兼容 rehype 的自有 Markdown 工具,这令人相当沮丧。

好在他们添加了一个工具来继续使用 rehype,但我不确定这套兼容方案能维持多久。

这引发了库作者 Erika 的回应:

我们无意移除对 unified 生态系统的支持,我们特意将 Markdown 处理管道设计为可插拔的,以便两者可以共存!

我们的绝大多数用户不使用 unified 插件,因此一个更快(且依赖项减少约 100 个)的管道作为默认选项更为合适。

另一位评论者问道:

Sätteri 和 marked (https://github.com/markedjs/marked) 这样的标准库相比表现如何?

Erika 也对此作出了回应:

这要看你关注的是哪个方面,我这里有一些基准测试数据,如果你感兴趣可以看看:

https://github.com/Princesseuh/web-markdown-benchmark

简单总结,marked 非常轻量,但与 Sätteri 和 markdown-it(及其分支)相比速度稍慢。我不确定它的扩展性如何,但 Sätteri 复用了与 unified 生态系统相同的 AST 格式,这可能让人感觉更友好。

不过两者都是不错的选择!

迁移时最主要需要注意的问题是 Sätteri 不运行 remark 或 rehype 插件。Astro v7 升级指南建议:没有使用插件的项目无需改动;依赖插件的项目可以将其移植为 Sätteri MDAST 或 HAST 插件,或者通过安装 @astrojs/markdown-remark 继续使用 unified。升级可通过 npx @astrojs/upgrade 命令完成。

Sätteri 并非唯一追求原生高性能 Markdown 的项目。用 Zig 编写的 Bun.markdown 也宣称取得了相近的性能提升,但缺少插件系统。Sätteri 复用 unified AST 格式的能力是其区别于其他方案的特点。Sätteri 是开源项目,可通过 npmcrates.io 获取。

查看英文原文:https://www.infoq.com/news/2026/08/astro-satteri-rust/