Beautiful‑Mermaid: 超高速、全主题可用的 Mermaid 图表渲染器
Beautiful‑Mermaid: 超高速、全主题可用的 Mermaid 图表渲染器
Beautiful‑Mermaid 是一款极小、纯 TypeScript 的库,可将 Mermaid‑DSL 转化为精美的 SVG 或终端友好的 ASCII 艺术,且占用空间极小。它是 Craft Agents 图表支持的引擎,能在 500 毫秒内渲染 100+ 图表,提供 15 款现成主题,并支持无缝的基于 CSS 的实时主题切换。
主要特点
- 零 DOM 依赖 – 纯 TS,支持 Node、浏览器或 CLI。
- 快速渲染 – 超轻量打包,500 毫秒内渲染 100+ 图表。
- 双重输出 – SVG 供丰富 UI 使用,ASCII/Unicode 供终端使用。
- 丰富主题 – 双色单色模式、增色模式、15 款内置主题、Shiki 集成。
- 实时主题切换 – CSS 自定义属性,无需重新渲染。
- 多图表支持 – 流程图、状态图、序列图、类图和 ER 图。
快速开始
# 通过你喜欢的包管理器安装
npm i beautiful-mermaid
# 或
bun add beautiful-mermaid
# 或
pnpm add beautiful-mermaid
渲染 SVG
import { renderMermaid } from 'beautiful-mermaid';
const diagram = `
sequenceDiagram
Alice->>Bob: Hello Bob!
Bob-->>Alice: Hi Alice!
`;
const svg = await renderMermaid(diagram, {
// 你可以选择预制主题
...THEMES['tokyo-night'],
// 或自定义颜色方案
bg: '#1a1b26',
fg: '#a9b1d6',
});
document.body.innerHTML = svg;
在 CLI 中渲染 ASCII
import { renderMermaidAscii } from 'beautiful-mermaid';
const ascii = renderMermaidAscii(`graph LR; A --> B --> C`);
console.log(ascii);
┌───┐ ┌───┐ ┌───┐
│ A │────►│ B │────►│ C │
└───┘ └───┘ └───┘
用 CSS 变量自定义主题
所有主题颜色都是位于 <svg> 根元素上的 CSS 自定义属性,能够实现即时的实时切换:
svg.style.setProperty('--bg', '#282a36');
svg.style.setProperty('--fg', '#f8f8f2');
SVG 会立即更新,无需重新渲染。
集成 Shiki 主题
若你喜欢 VS Code 风格的主题,只需导入 Shiki 主题并转换:
import { getSingletonHighlighter } from 'shiki';
import { renderMermaid, fromShikiTheme } from 'beautiful-mermaid';
const highlighter = await getSingletonHighlighter({
themes: ['dracula', 'catppuccin-mocha'],
});
const colors = fromShikiTheme(highlighter.getTheme('dracula'));
const svg = await renderMermaid(diagram, colors);
示例:渲染流程图
const flow = `
flowchart TD
Start --> Decide{Decision}
Decide -->|Yes| Process
Decide -->|No| End
`;
const svg = await renderMermaid(flow, THEMES['one-dark']);
为什么选择 Beautiful‑Mermaid?
- 简洁 – 无繁重依赖,纯 TS。
- 性能 – 基准测试显示 100+ 图表 < 500 ms。
- 通用性 – 适用于 Web、Node 或任何环境。
- 可扩展 – 可自定义主题,与 Shiki 集成,颜色实时切换。
- 开源 – MIT 许可证,社区友好。
使用场景
- 开发工具 – 在 VS Code 扩展中嵌入交互式流程图。
- 文档 – 为 MkDocs 或 Docsify 生成 SVG 图表。
- CLI 工具 – 在终端日志中打印人性化图表。
- 聊天机器人 – 当用户请求图表帮助时,视觉化逻辑。
社区与贡献
Beautiful‑Mermaid 是 GitHub 上一个活跃的项目。欢迎通过 issue 和 pull request 进行贡献。查看 issues 线程 了解未完成任务,或查看 贡献指南。
TL;DR
- 安装
beautiful-mermaid。 - 调用
renderMermaid()生成 SVG,或renderMermaidAscii()生成文本。 - 使用内置主题或自定义颜色。
- 用 CSS 变量实时切换主题。
- 利用 Shiki 获得 VS Code 主题配色。
使用 Beautiful‑Mermaid,你可以把普通 Mermaid 文本转换为惊艳的视觉体验——无论是浏览器、终端,还是你需要的任何地方。
原创文章:
查看原文