讀後筆記:beautiful-mermaid —— 讓 Mermaid 圖表在終端與 UI 都更美、更快、更好用

本篇文章更新時間:2026/01/30
如有資訊過時或語誤之處,歡迎使用 Contact 功能通知。
一介資男的 LINE 社群開站囉!歡迎入群聊聊~
如果本站內容對你有幫助,歡迎使用 BFX Pay 加密貨幣新台幣 贊助支持。


beautiful-mermaid:讓我重新思考圖表在開發者工作流中的角色

編輯前言:這篇筆記源自我閱讀 GitHub - lukilabs/beautiful-mermaid 的紀錄。作者用非常務實的方式重新打造 Mermaid 渲染器,讓圖表不只美觀,還真正融入現代 AI 協作與 CLI 工作流。

核心觀點 (Key Takeaways)

  • Mermaid 是文本文字圖表的標準,但原生渲染在美觀度、客製化、與終端支援上仍有限。
  • beautiful-mermaid 重新實作一套渲染器,強調速度、主題易用性,以及「SVG + ASCII」雙輸出模式。
  • 兩色基礎主題設計(bg/fg)讓建立新風格變得極簡,也提供與 Shiki 完整整合。

深入解析

閱讀原文後,我最有感的是作者從「AI-assisted programming」的使用情境出發:

"When you're working with an AI coding assistant, being able to visualize data flows, state machines, and system architecture makes complex concepts instantly graspable."

換句話說,圖表不再只是文件工具,而是與 AI 對話的中介層。因此他們打造了一個真正能在 所有環境 工作的渲染器:

  • 支援五種圖表:Flowchart、State、Sequence、Class、ER
  • 雙輸出:SVG(UI)與 ASCII/Unicode(終端)
  • 零 DOM 依賴:純 TypeScript
  • 極快渲染速度:500ms 內完成百張圖

兩色主題系統:Mono Mode 的巧思

原文中提到,只需設定 bgfg,其他所有顏色就能從 CSS color-mix() 推導。這個做法非常聰明,保留風格一致性的同時,又能讓使用者快速客製:

  • Node fill = --fg at 3% into --bg
  • Edge labels = --fg at 40% into --bg

這些細膩的推導邏輯,讓整個圖表呈現出一致、柔和又有層次的視覺效果。

Enriched Mode:用最少設定達到最大美感

如果想更細調,可以加入 accentlinemutedsurfaceborder 等 enrichments,讓特定元素更突出。這做法顧及到「想簡單」與「要細緻」的兩類使用者。

Shiki 整合:把 VS Code 的主題直接拿來用

這段我覺得非常聰明,也最符合開發者習慣:

"Use any VS Code theme directly via Shiki integration."

只要你喜歡某個 VS Code 主題,一行程式就能把它轉成 Mermaid 主題;對於每天在控制台、編輯器、文件之間穿梭的工程師來說,這讓視覺一致性近乎完美。

筆者心得與啟發

實際讀完 beautiful-mermaid 的介紹,我最大的感想是:

這不只是一個 Mermaid 替代品,而是一個「符合 AI 時代」的圖表渲染設計理念。

以往的 Mermaid 工具,更多是為文件、Wiki、靜態頁面服務;但現在我們在 CLI、ChatGPT、VS Code、雲端代理(agents)中都需要圖表,這意味著:

  • 圖表要能快速渲染
  • 要能在沒有 DOM 的環境工作
  • 要能在終端直接輸出 ASCII/Unicode
  • 要能配合 AI 與人類雙方的理解需求

beautiful-mermaid 正是在這個背景下誕生的。

我會推薦它給:

  • 需要在 VS Code 或命令列快速可視化流程的開發者
  • 想讓 AI 帶你畫圖,但又受不了原生 Mermaid 樣式的人
  • 在做技術文件、教學、或系統設計圖的工程師

如果你本來就依賴 Mermaid,那 beautiful-mermaid 會讓你意識到:

原來圖表不只能「能用」,還能這麼好看、這麼快、這麼跨平台。



Share:

作者: Chun

資訊愛好人士。主張「人人都該為了偷懶而進步」。期許自己成為斜槓到變進度條 100% 的年輕人。[///////////____36%_________]

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *


文章
Filter
Apply Filters
Mastodon