什麼是 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 安裝,也不必煩惱執行順序。

處理階段說明
消毒處理採用 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 的模組解析機制。

相對地,它著重於使用情境的完整性──涵蓋大多數專案所需的功能,而不必費心組合外掛管線。