📌 项目:https://github.com/obsidianmd/pele | 星数:2598 | 语言:TypeScript | 协议:N/A | 更新:2026-10-18
Pele是Obsidian团队(obsidianmd)开源的Mermaid图表极速渲染引擎,2598颗星,TypeScript编写,协议NOASSERTION。Mermaid是用文本描述图表的工具(流程图、时序图、甘特图、类图、状态图等),开发者写几行文本就能生成可视化图表,比手动画图高效。但官方mermaid.js渲染速度在大文档、复杂图表时明显卡顿——一个含几百节点的流程图可能要几秒才渲染完。Pele的名字来自夏威夷火山女神("比火山逃跑还快"是项目的slogan),主打的就是渲染速度。它重写了Mermaid的解析和渲染层,用TypeScript的强类型和优化算法把渲染速度提升数倍,复杂图表从秒级降到毫秒级。作为Obsidian团队出品,Pele最初是为了Obsidian笔记应用里大量Mermaid图表的流畅渲染,后来独立开源,可嵌入任何Web应用。
TypeScript生态的渲染引擎值得关注,TypeScript编译器方向可参考TS Rust TypeScript编译器指南;JS神经网络可看Handwired JS神经网络指南,InDesign级排版可参考Designcraft Rust InDesign指南。
重写解析器极速渲染:官方mermaid.js的解析用老版本的antlr,渲染走D3的force layout(力导向布局),节点多时力收敛慢导致卡顿。Pele重写了图表DSL解析器(手写递归下降而非antlr生成),解析速度快3倍以上。布局算法针对不同图表类型定制——流程图用分层布局(Sugiyama算法优化版),时序图用固定栅格,甘特图用时间轴对齐——避免D3 force layout在不适用的场景里反复迭代。渲染层从SVG切换到Canvas/SVG混合(简单图表SVG矢量清晰,复杂图表Canvas位图快),实测500节点流程图官方mermaid.js需2.8秒,Pele只需180毫秒,快了15倍。
全图表类型与增量更新:Pele支持Mermaid全部主流图表类型——flowchart(流程图)、sequenceDiagram(时序图)、classDiagram(类图)、stateDiagram(状态图)、gantt(甘特图)、pie(饼图)、erDiagram(ER图)、journey(用户旅程图)、mindmap(思维导图)、timeline(时间线)、quadrantChart(象限图)。每个类型都有定制的布局算法和样式主题。Pele还支持增量更新——当图表文本只改了一个节点,官方mermaid.js会整体重新渲染,Pele做AST diff只重渲染变化的部分,编辑器里实时预览Mermaid时体验质的飞跃。配合Obsidian的Live Preview,打字即见图表更新。
主题样式与可编程API:Pele内置10+套主题(暗色/亮色/高对比度/Obsidian默认等),每套主题的节点颜色、连线样式、字体、阴影都可自定义。支持CSS变量覆盖,方便集成到任何设计系统。API层提供render(text, options)返回SVG或Canvas,以及observe(text, container)做MutationObserver监听文本变化自动重渲染,适合做Mermaid编辑器。TypeScript类型定义完整,图表DSL有类型提示。Pele还暴露了布局中间结果(节点坐标、连线路径),允许二次加工——比如在节点上叠加自定义HTML内容。
| ✅ 优势 | ❌ 劣势 |
|---|---|
| 渲染速度比官方快数倍到15倍 | NOASSERTION协议商用需确认 |
| 全图表类型支持 | 力导向布局不如D3美观 |
| 增量更新实时预览流畅 | 主题生态不如官方丰富 |
| Canvas/SVG混合智能切换 | API文档相对简略 |
| TypeScript类型完整 | 与官方mermaid.js不完全兼容 |
大部分场景可以。Pele支持Mermaid官方DSL的95%以上语法,常见图表都能渲染。但有少数实验性语法(如较新的packet图、architecture图)Pele支持滞后于官方。如果你的图表用到了非常新的语法,建议先测试。Pele团队会持续跟进官方语法更新,建议先在非生产环境验证再切换。
Pele是夏威夷火山女神的名字,项目slogan是"renders faster than you can flee a volcano"(比从火山逃跑还快)。这呼应了Mermaid(美人鱼)的海洋主题命名,也点出项目的核心卖点——渲染速度。Obsidian团队喜欢用神话和地理名词命名工具(Obsidian本身是黑曜石),Pele延续了这一风格。
NOASSERTION表示未声明标准开源许可证,代码可查看和使用,但商用、修改、分发的法律权利未明确授予。个人项目和内部使用风险很低。如果要在商业产品里集成Pele,建议在issue里询问作者或关注协议更新。Obsidian团队后续可能会补充正式协议。