Mermaid ASCII: Mermaid-Diagramme im Terminal rendern
(github.com/lukilabs)- beautiful-mermaid ist ein ultraschnelles, TypeScript-basiertes Tool zum Rendern von Mermaid-Diagrammen als SVG oder ASCII-Art
- Unterstützt 5 Diagrammtypen (Flowchart, State, Sequence, Class, ER) und funktioniert sowohl im Terminal als auch im Browser
- Mit 15 integrierten Themes und Shiki-Kompatibilität lassen sich VS-Code-Themes direkt anwenden
- Der Mono-Modus bietet eine konsistente visuelle Darstellung mit nur zwei Farben, während benutzerdefinierte CSS-Eigenschaften einen Theme-Wechsel in Echtzeit ermöglichen
- Gewinnt als leichtgewichtiges, abhängigkeitfreies Tool an Bedeutung, um Datenflüsse und Systemstrukturen in KI-gestützten Programmierumgebungen zu visualisieren
Überblick
- beautiful-mermaid ist ein Tool zum Rendern von Mermaid-Diagrammen als SVG oder ASCII/Unicode-Text
- Funktioniert ohne DOM-Abhängigkeiten und unterstützt ultraschnelles Rendering (mehr als 100 Diagramme in unter 500 ms)
- Entwickelt vom Craft-Team für Craft Agents
- Portiert Mermaid-ascii (ein Go-basiertes Projekt) nach TypeScript und erweitert den Funktionsumfang
- Unterstützung für Sequence-, Class- und ER-Diagramme hinzugefügt
- Enthält Unicode-Rahmenzeichen sowie Einstellungen für Abstände und Padding
Hauptfunktionen
- Unterstützte Diagrammtypen: Flowchart, State, Sequence, Class, ER
- Ausgabeformate: SVG (für Rich UI), ASCII/Unicode (für Terminals)
- Theme-System
- 15 integrierte Themes verfügbar (
tokyo-night,dracula,nord,github-darkusw.) - Mono-Modus: Leitet automatisch das gesamte Farbschema aus nur zwei Farben für Hintergrund (bg) und Vordergrund (fg) ab
- Enriched-Modus: Optionale Farbangaben wie
accent,muted,surface,bordersind möglich - Unterstützt Echtzeit-Wechsel auf Basis benutzerdefinierter CSS-Eigenschaften
- 15 integrierte Themes verfügbar (
- Shiki-Integration
- Ordnet Farben aus VS-Code-Themes automatisch den Diagrammfarben zu
- Mit der Funktion
fromShikiTheme()lassen sichbg,fg,accentusw. extrahieren
Installation und Verwendung
- Installationsbefehl
npm install beautiful-mermaidoderbun add beautiful-mermaid,pnpm add beautiful-mermaid
- Beispiel für SVG-Rendering
import { renderMermaid } from 'beautiful-mermaid' const svg = await renderMermaid(`graph TD; A-->B;`) - Beispiel für ASCII-Rendering
import { renderMermaidAscii } from 'beautiful-mermaid' const ascii = renderMermaidAscii(`graph LR; A --> B --> C`) - Verwendung im Browser
- Kann über CDN (
unpkg,jsDelivr) direkt per<script>-Tag geladen werden - Über das globale Objekt
beautifulMermaidsindrenderMermaid,renderMermaidAscii,THEMESusw. zugänglich
- Kann über CDN (
ASCII-Ausgabe und Optionen
- Unterstützt Unicode-Modus (Standard) und reinen ASCII-Modus
- Optionen
useAscii: ob ASCII verwendet wirdpaddingX,paddingY: Abstand zwischen KnotenboxBorderPadding: Innenabstand der Knoten
- Beispielausgabe
┌───┐ ┌───┐ │ A │────►│ B │ └───┘ └───┘
API-Zusammenfassung
renderMermaid(text, options?): Rendert ein Mermaid-Diagramm als SVG- Optionen:
bg,fg,accent,muted,surface,border,font,transparent
- Optionen:
renderMermaidAscii(text, options?): Rendert als ASCII-/Unicode-TextfromShikiTheme(theme): Extrahiert Farben aus einem Shiki-ThemeTHEMES: Objekt mit 15 integrierten ThemesDEFAULTS: Standardfarben (#FFFFFF,#27272A)
Lizenz und Erstellung
- MIT-Lizenz
- Erstellt vom Craft-Team
- Basis der ASCII-Engine: mermaid-ascii von Alexander Grooff
Technische Bedeutung
- In KI-gestützten Coding-Assistent-Umgebungen lassen sich Diagramme direkt im Terminal oder in Chat-Oberflächen visualisieren
- Dank leichtgewichtigem, schnellem und abhängigkeitfreiem Aufbau auch für CLI-Tools oder Serverumgebungen sehr gut geeignet
- Erweiterbarkeit und Kompatibilität der Themes verbessern die Developer Experience
1 Kommentare
Hacker-News-Kommentare
Das Projekt auf Basis der von Alexander Grooff entwickelten Go-Bibliothek mermaid-ascii ist wirklich cool
Allerdings wurde ein Bug entdeckt, bei dem die "start"-Kante nicht gerendert wird
Getestet wurde auf agents.craft.do/mermaid
Ich verstehe nicht ganz, warum ASCII-Diagramme gerade wieder so viel Aufmerksamkeit bekommen
Mermaid oder PlantUML sind ohnehin schon textbasiert, und die meisten Nutzer wollen standardisierte Diagramme, die für Menschen gut lesbar sind, nicht für Maschinen
ASCII ist auf druckbare Zeichen beschränkt, hat daher weniger Ausdruckskraft und lässt sich auch schwer standardisieren
Denn man braucht kein Management von Bilddateien und keine komplexe Konfiguration wie Git LFS
Ich mag ASCII-Diagramme wirklich sehr
Ob man sie im Terminal mit
catansieht oder auf einer Website rendert, sie sehen auf beide Arten großartig ausMit einer guten Monospace-Schriftart wirken sie auch optisch sauber
Ich empfehle auch die App Monodraw zum Erstellen von ASCII-Diagrammen
Der eigentliche Mermaid-ASCII-Renderer wurde aus dem Projekt AlexanderGrooff/mermaid-ascii übernommen
Dieses Projekt hat ihn nach TypeScript konvertiert und eigene Themes hinzugefügt
Der Hauptalgorithmus ist fast eine 1:1-Konvertierung, daher hätte Claude es vermutlich in weniger als einer Stunde nach TS portieren können
Man kann den Go-Code mit dem TS-Code vergleichen
Mermaid bekommt viel Aufmerksamkeit, aber Kroki(kroki.io) unterstützt eine deutlich größere Vielfalt an Diagrammformaten
Darunter fast alle textbasierten Diagramme wie BlockDiag, BPMN, C4, D2, DBML, Excalidraw und GraphViz
Mein Markdown-Editor KeenWrite(keenwrite.com) integriert Kroki als Dienst, sodass neue Formate automatisch verfügbar werden, sobald sie hinzugefügt werden
Mermaid verwendet
<foreignObject>, weshalb das Rendering in den meisten Bibliotheken schwierig istMermaidJS läuft schnell und lokal innerhalb von Webseiten, während Kroki von einem externen Dienst abhängig ist
Wenn man keine komplexen Diagramme braucht, ist Mermaid die einfachere Wahl
In den README-Beispielen gibt es verschiedene Ausgaben, darunter auch einen Schachgraphen
Trotzdem finde ich den Standardstil von Mermaid sauberer
Übrigens wirkt KeenWrite ziemlich hervorragend
Es gibt auch das Tool Diagon, das Text in ASCII-Diagramme umwandelt
Ich habe außerdem eine Liste von Text-zu-Diagramm-Tools zusammengestellt, aber Tools für Text→ASCII gibt es nicht viele
Um die Live-Demo auszuführen, braucht man anscheinend den Download einer AI-Agent-Plattform
Schade, dass man es nicht einfach sofort ohne Installation ausprobieren kann
Nach der Projektstruktur zu urteilen, sollte das gut möglich sein
Es gibt die Funktion „Subgraph Direction Override“, mit der man die Richtung eines Subgraphen separat festlegen kann
Damit kann man Swimlane-Diagramme, die Mermaid bisher nicht unterstützt, nachbilden
Mein Projekt Selkie ist ein experimentelles Projekt, das Mermaid-Parser und -Renderer vollständig in Rust implementiert
Es diente dazu zu testen, wie viel mit Claude Code möglich ist, und das Ergebnis ist erstaunlich
Im Playground kann man es direkt ausprobieren
Mit Unterstützung für das Kitty-Terminal könnte man Diagramme sogar direkt im Terminal ausgeben
Bald werde ich den gesamten Prozess in einem Blogpost zusammenfassen
Dieses Projekt ist wirklich großartig, und auch die Synergie mit Claude Code ist beeindruckend
Ich habe ein ähnliches Projekt gemacht, mich aber statt auf ASCII auf interaktive Code-Erkundung konzentriert
Es wurde so entworfen, dass es das menschliche Verständnis unterstützt, nutzt D2 und bereitet auch Mermaid-Unterstützung vor
Ich würde gern Meinungen dazu hören, ob Interaktivität für Menschen wertvoller ist oder ob Agenten-Kontext wichtiger ist
Projektlink