- beautiful-mermaid adalah alat berbasis TypeScript supercepat untuk merender diagram Mermaid menjadi SVG atau ASCII art
- Mendukung 5 jenis diagram (Flowchart, State, Sequence, Class, ER), dan berjalan baik di terminal maupun browser
- Dengan 15 tema bawaan dan kompatibilitas Shiki, tema VS Code dapat langsung diterapkan
- Mode Mono menyediakan representasi visual yang konsisten hanya dengan dua warna, dan mendukung pergantian tema secara real-time melalui properti kustom CSS
- Menonjol sebagai alat ringan tanpa dependensi untuk memvisualisasikan aliran data dan struktur sistem di lingkungan pemrograman berbantuan AI
Gambaran umum
- beautiful-mermaid adalah alat untuk merender diagram Mermaid menjadi SVG atau teks ASCII/Unicode
- Berjalan tanpa dependensi DOM dan mendukung rendering supercepat (lebih dari 100 diagram dalam 500 ms)
- Dikembangkan oleh tim Craft untuk Craft Agents
- Merupakan port Mermaid-ascii (proyek berbasis Go) ke TypeScript dengan perluasan fitur
- Menambahkan dukungan untuk diagram Sequence, Class, dan ER
- Mencakup karakter kotak Unicode, serta pengaturan spasi dan padding
Fitur utama
- Jenis diagram yang didukung: Flowchart, State, Sequence, Class, ER
- Format keluaran: SVG (untuk UI kaya), ASCII/Unicode (untuk terminal)
- Sistem tema
- Menyediakan 15 tema bawaan (
tokyo-night, dracula, nord, github-dark, dll.)
- Mode Mono: seluruh warna diturunkan otomatis hanya dari dua warna, yaitu latar belakang (bg) dan latar depan (fg)
- Mode Enriched: warna opsional seperti
accent, muted, surface, border dapat ditentukan
- Mendukung pergantian real-time berbasis properti kustom CSS
- Integrasi Shiki
- Secara otomatis memetakan warna tema VS Code ke warna diagram
- Fungsi
fromShikiTheme() dapat mengekstrak bg, fg, accent, dll.
Instalasi dan penggunaan
- Perintah instalasi
npm install beautiful-mermaid atau bun add beautiful-mermaid, pnpm add beautiful-mermaid
- Contoh rendering SVG
import { renderMermaid } from 'beautiful-mermaid'
const svg = await renderMermaid(`graph TD; A-->B;`)
- Contoh rendering ASCII
import { renderMermaidAscii } from 'beautiful-mermaid'
const ascii = renderMermaidAscii(`graph LR; A --> B --> C`)
- Penggunaan di browser
- Dapat dimuat langsung melalui tag
<script> via CDN (unpkg, jsDelivr)
- Objek global
beautifulMermaid menyediakan akses ke renderMermaid, renderMermaidAscii, THEMES, dll.
Keluaran ASCII dan opsi
Ringkasan API
renderMermaid(text, options?): merender diagram Mermaid menjadi SVG
- Opsi:
bg, fg, accent, muted, surface, border, font, transparent
renderMermaidAscii(text, options?): merender menjadi teks ASCII/Unicode
fromShikiTheme(theme): mengekstrak warna dari tema Shiki
THEMES: objek 15 tema bawaan
DEFAULTS: warna default (#FFFFFF, #27272A)
Lisensi dan pembuatan
- Lisensi MIT
- Dibuat oleh tim Craft
- Mesin ASCII berbasis: mermaid-ascii karya Alexander Grooff
Makna teknis
- Di lingkungan asisten coding AI, diagram dapat langsung divisualisasikan di terminal atau antarmuka chat
- Dengan struktur ringan, cepat, dan tanpa dependensi, alat ini juga sangat berguna di tool CLI maupun lingkungan server
- Ekstensibilitas dan kompatibilitas tema meningkatkan pengalaman pengembang
1 komentar
Opini Hacker News
Proyek berbasis pustaka Go mermaid-ascii buatan Alexander Grooff ini benar-benar keren
Namun, ditemukan bug di mana edge "start" tidak dirender
Pengujian dilakukan di agents.craft.do/mermaid
Saya kurang paham kenapa diagram ASCII kembali mendapat perhatian belakangan ini
Mermaid dan PlantUML juga sudah berbasis teks, dan kebanyakan pengguna menginginkan diagram standar yang enak dilihat manusia, bukan mesin
ASCII terbatas pada karakter yang bisa dicetak, jadi daya ekspresinya lebih rendah dan juga sulit distandardisasi
Karena tidak perlu pengelolaan file gambar atau konfigurasi rumit seperti Git LFS
Saya sangat suka diagram ASCII
Daya tariknya adalah tampil sama kerennya baik dilihat dengan
catdi terminal maupun dirender di situs webDengan font monospaced yang bagus, tampilannya juga rapi secara visual
Saya juga merekomendasikan aplikasi pembuat diagram ASCII bernama Monodraw
Renderer Mermaid ASCII yang sebenarnya diambil dari proyek AlexanderGrooff/mermaid-ascii
Proyek ini mengonversinya ke TypeScript dan menambahkan tema sendiri
Algoritme utamanya hampir merupakan konversi 1:1, jadi kemungkinan Claude bisa mem-porting ke TS dalam waktu kurang dari satu jam
Anda bisa membandingkan kode Go dan kode TS
Mermaid memang sedang mendapat perhatian, tetapi Kroki(kroki.io) mendukung format diagram yang jauh lebih beragam
Termasuk hampir semua diagram berbasis teks seperti BlockDiag, BPMN, C4, D2, DBML, Excalidraw, GraphViz, dan lainnya
Editor Markdown saya, KeenWrite(keenwrite.com), mengintegrasikan Kroki sebagai layanan, sehingga saat format baru ditambahkan, format itu langsung bisa digunakan otomatis
Karena Mermaid memakai
<foreignObject>, rendering-nya sulit dilakukan di sebagian besar pustakaMermaidJS berjalan cepat dan lokal di dalam halaman web, tetapi Kroki bergantung pada layanan eksternal
Jika tidak membutuhkan diagram yang kompleks, Mermaid adalah pilihan yang lebih sederhana
Ada berbagai contoh output seperti graf catur di contoh README
Meski begitu, saya tetap merasa gaya default Mermaid lebih rapi
Sebagai catatan, KeenWrite terlihat cukup bagus
Ada juga alat Diagon yang mengubah teks menjadi diagram ASCII
Saya juga punya daftar alat teks→diagram yang saya susun, meski alat untuk konversi teks→ASCII tidak banyak
Untuk menjalankan demo live, sepertinya perlu mengunduh platform agen AI
Agak disayangkan karena saya ingin langsung mencobanya tanpa instalasi
Dari struktur proyeknya, itu tampak sangat memungkinkan
Ada fitur “Subgraph Direction Override”, sehingga arah subgraf bisa diatur berbeda
Dengan ini, dimungkinkan untuk meniru diagram swim lane yang sebelumnya tidak didukung Mermaid
Selkie buatan saya adalah proyek eksperimen yang mengimplementasikan parser dan renderer Mermaid sepenuhnya dalam Rust
Awalnya dipakai untuk menguji sejauh mana Claude Code bisa digunakan, dan hasilnya mengejutkan
Bisa langsung dijalankan di Playground
Jika mendukung terminal Kitty, diagram bahkan bisa ditampilkan langsung di terminal
Saya akan segera menulis seluruh prosesnya di blog
Proyek ini benar-benar keren, dan sinerginya dengan Claude Code juga mengesankan
Saya pernah membuat proyek serupa, tetapi alih-alih ASCII, saya fokus pada penjelajahan kode interaktif
Saya merancangnya untuk membantu pemahaman manusia, menggunakan D2, dan dukungan Mermaid juga sedang disiapkan
Saya ingin mendengar pendapat apakah interaktivitas untuk manusia lebih bernilai, atau apakah konteks agen yang lebih penting
Tautan proyek