Mermaid ASCII : rendu de diagrammes Mermaid dans le terminal
(github.com/lukilabs)- beautiful-mermaid est un outil ultra-rapide basé sur TypeScript pour rendre des diagrammes Mermaid en SVG ou en art ASCII
- Prend en charge 5 types de diagrammes (Flowchart, State, Sequence, Class, ER) et fonctionne à la fois dans le terminal et dans le navigateur
- Grâce à 15 thèmes intégrés et à la compatibilité Shiki, il est possible d’appliquer directement des thèmes VS Code
- Le mode Mono fournit une représentation visuelle cohérente avec seulement deux couleurs, tandis que les propriétés CSS personnalisées permettent un changement de thème en temps réel
- Son importance ressort comme outil léger et sans dépendances pour visualiser les flux de données et la structure des systèmes dans des environnements de programmation assistée par IA
Vue d’ensemble
- beautiful-mermaid est un outil qui rend des diagrammes Mermaid en SVG ou en texte ASCII/Unicode
- Fonctionne sans dépendance au DOM et prend en charge un rendu ultra-rapide (plus de 100 diagrammes en moins de 500 ms)
- Développé par l’équipe Craft pour Craft Agents
- Portage en TypeScript de Mermaid-ascii (projet basé sur Go), avec des fonctionnalités étendues
- Ajout de la prise en charge des diagrammes Sequence, Class et ER
- Inclut les caractères de boîte Unicode, ainsi que des réglages d’espacement et de padding
Fonctionnalités principales
- Types de diagrammes pris en charge : Flowchart, State, Sequence, Class, ER
- Formats de sortie : SVG (pour les interfaces riches), ASCII/Unicode (pour le terminal)
- Système de thèmes
- 15 thèmes intégrés disponibles (
tokyo-night,dracula,nord,github-dark, etc.) - Mode Mono : toutes les couleurs sont automatiquement dérivées à partir de deux couleurs seulement, l’arrière-plan (
bg) et l’avant-plan (fg) - Mode enrichi : possibilité de définir des couleurs optionnelles comme
accent,muted,surface,border, etc. - Prend en charge un basculement en temps réel basé sur les propriétés CSS personnalisées
- 15 thèmes intégrés disponibles (
- Intégration Shiki
- Mappage automatique des couleurs des thèmes VS Code vers les couleurs du diagramme
- La fonction
fromShikiTheme()permet d’extrairebg,fg,accent, etc.
Installation et utilisation
- Commandes d’installation
npm install beautiful-mermaidoubun add beautiful-mermaid,pnpm add beautiful-mermaid
- Exemple de rendu SVG
import { renderMermaid } from 'beautiful-mermaid' const svg = await renderMermaid(`graph TD; A-->B;`) - Exemple de rendu ASCII
import { renderMermaidAscii } from 'beautiful-mermaid' const ascii = renderMermaidAscii(`graph LR; A --> B --> C`) - Utilisation dans le navigateur
- Chargement direct possible via une balise
<script>depuis un CDN (unpkg,jsDelivr) - Accès à
renderMermaid,renderMermaidAscii,THEMES, etc. depuis l’objet globalbeautifulMermaid
- Chargement direct possible via une balise
Sortie ASCII et options
- Prise en charge du mode Unicode (par défaut) et du mode ASCII pur
- Options disponibles
useAscii: activer ou non ASCIIpaddingX,paddingY: espacement entre les nœudsboxBorderPadding: marge intérieure des nœuds
- Exemple de sortie
┌───┐ ┌───┐ │ A │────►│ B │ └───┘ └───┘
Résumé de l’API
renderMermaid(text, options?): rend un diagramme Mermaid en SVG- Options :
bg,fg,accent,muted,surface,border,font,transparent
- Options :
renderMermaidAscii(text, options?): rendu en texte ASCII/UnicodefromShikiTheme(theme): extrait les couleurs d’un thème ShikiTHEMES: objet contenant 15 thèmes intégrésDEFAULTS: couleurs par défaut (#FFFFFF,#27272A)
Licence et création
- Licence MIT
- Créé par l’équipe Craft
- Moteur ASCII basé sur mermaid-ascii d’Alexander Grooff
Portée technique
- Dans les environnements d’assistant de code IA, il permet de visualiser instantanément des diagrammes dans le terminal ou dans une interface de chat
- Sa structure légère, rapide et sans dépendances le rend très utile aussi bien pour les outils CLI que pour les environnements serveur
- Son extensibilité thématique et sa compatibilité améliorent l’expérience développeur
1 commentaires
Commentaires sur Hacker News
Le projet basé sur la bibliothèque Go mermaid-ascii créée par Alexander Grooff est vraiment génial
J’y ai toutefois trouvé un bug où l’arête "start" n’est pas rendue
Les tests ont été effectués sur agents.craft.do/mermaid
Je ne comprends pas bien pourquoi les diagrammes ASCII reviennent à la mode en ce moment
Mermaid et PlantUML sont déjà basés sur du texte, et la plupart des utilisateurs veulent surtout des diagrammes standards agréables à lire pour les humains plutôt que pour les machines
ASCII est limité aux caractères imprimables, donc c’est moins expressif et difficile à standardiser
car cela évite d’avoir à gérer des fichiers image ou des configurations complexes comme Git LFS
J’adore vraiment les diagrammes ASCII
Que ce soit dans un terminal avec
catou rendus sur un site web, ils gardent le même rendu sympaAvec une bonne police à chasse fixe, c’est aussi très propre visuellement
Je recommande aussi Monodraw, une application de création de diagrammes ASCII
Le véritable moteur de rendu Mermaid ASCII provient en fait du projet AlexanderGrooff/mermaid-ascii
Ce projet l’a converti en TypeScript et a ajouté son propre thème
L’algorithme principal est presque une conversion 1:1, donc Claude aurait probablement pu le porter en TS en moins d’une heure
On peut comparer le code Go et le code TS
Mermaid attire l’attention, mais Kroki(kroki.io) prend en charge une bien plus grande variété de formats de diagrammes
Cela inclut pratiquement tous les diagrammes textuels comme BlockDiag, BPMN, C4, D2, DBML, Excalidraw, GraphViz, etc.
Mon éditeur Markdown KeenWrite(keenwrite.com) intègre Kroki comme service, donc lorsqu’un nouveau format est ajouté, il devient automatiquement disponible
Comme Mermaid utilise
<foreignObject>, son rendu est difficile dans la plupart des bibliothèquesMermaidJS s’exécute rapidement et localement dans une page web, tandis que Kroki dépend d’un service externe
Si l’on n’a pas besoin de diagrammes complexes, Mermaid est le choix le plus simple
Le README d’exemple montre divers rendus, dont des graphes d’échecs
Je trouve quand même le style par défaut de Mermaid plus propre
Cela dit, KeenWrite a l’air vraiment excellent
Il existe aussi Diagon, un outil qui convertit du texte en diagrammes ASCII
J’ai aussi une liste d’outils texte→diagramme, mais il n’y a pas beaucoup d’outils de conversion texte→ASCII
Pour lancer la démo en direct, il semble qu’il faille télécharger la plateforme d’agents IA
C’est dommage qu’on ne puisse pas l’essayer directement sans installation
Vu la structure du projet, cela semble tout à fait faisable
Il existe une fonctionnalité appelée “Subgraph Direction Override”, qui permet de définir une direction différente pour les sous-graphes
Avec ça, on peut imiter des diagrammes en couloirs (swim lanes) que Mermaid ne prenait pas en charge
Selkie, que j’ai créé, est un projet expérimental qui implémente entièrement en Rust un parseur et un moteur de rendu Mermaid
Je m’en servais pour tester jusqu’où on pouvait aller avec Claude Code, et les résultats sont surprenants
On peut l’exécuter directement dans le Playground
Avec la prise en charge du terminal Kitty, il est même possible d’afficher les diagrammes directement dans le terminal
Je vais bientôt publier un billet de blog sur tout le processus
Ce projet est vraiment génial, et sa synergie avec Claude Code est aussi impressionnante
J’ai mené un projet similaire, mais axé sur l’exploration de code interactive plutôt que sur l’ASCII
Je l’ai conçu pour aider la compréhension humaine, en utilisant D2, avec une prise en charge de Mermaid en préparation
J’aimerais avoir des avis sur ce qui a le plus de valeur : l’interactivité pour les humains, ou le contexte pour les agents
Lien du projet