什麼是 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 的模組解析機制。
相對地,它著重於使用情境的完整性──涵蓋大多數專案所需的功能,而不必費心組合外掛管線。