Mermaid ASCII: 터미널에서 Mermaid 다이어그램 렌더링

1 week ago 5

  • beautiful-mermaid는 Mermaid 다이어그램을 SVG 또는 ASCII 아트로 렌더링하는 초고속 TypeScript 기반 도구
  • 5가지 다이어그램 유형(Flowchart, State, Sequence, Class, ER)을 지원하며, 터미널과 브라우저 모두에서 작동
  • 15개 내장 테마Shiki 호환성을 통해 VS Code 테마를 직접 적용 가능
  • Mono 모드로 단 두 가지 색상만으로도 일관된 시각 표현을 제공하며, CSS 커스텀 속성으로 실시간 테마 전환 지원
  • AI 보조 프로그래밍 환경에서 데이터 흐름과 시스템 구조를 시각화할 수 있는 경량·무의존형 도구로 중요성 부각

개요

  • beautiful-mermaid는 Mermaid 다이어그램을 SVG 또는 ASCII/Unicode 텍스트로 렌더링하는 도구
    • DOM 의존성 없이 작동하며, 초고속 렌더링(500ms 내 100개 이상 다이어그램) 지원
    • Craft 팀이 Craft Agents용으로 개발
  • Mermaid-ascii(Go 기반 프로젝트)를 TypeScript로 포팅하고 기능 확장
    • Sequence, Class, ER 다이어그램 지원 추가
    • Unicode 박스 문자, 간격 및 패딩 설정 기능 포함

주요 기능

  • 지원 다이어그램 유형: Flowchart, State, Sequence, Class, ER
  • 출력 형식: SVG(리치 UI용), ASCII/Unicode(터미널용)
  • 테마 시스템
    • 15개 내장 테마 제공 (tokyo-night, dracula, nord, github-dark 등)
    • Mono 모드: 배경(bg)과 전경(fg) 두 색상만으로 전체 색상 자동 파생
    • Enriched 모드: accent, muted, surface, border 등 선택적 색상 지정 가능
    • CSS 커스텀 속성 기반 실시간 전환 지원
  • Shiki 통합
    • VS Code 테마 색상을 다이어그램 색상으로 자동 매핑
    • fromShikiTheme() 함수로 bg, fg, accent 등 추출 가능

설치 및 사용

  • 설치 명령
    • npm install beautiful-mermaid 또는 bun add beautiful-mermaid, pnpm add beautiful-mermaid
  • SVG 렌더링 예시 import { renderMermaid } from 'beautiful-mermaid' const svg = await renderMermaid(`graph TD; A-->B;`)
  • ASCII 렌더링 예시 import { renderMermaidAscii } from 'beautiful-mermaid' const ascii = renderMermaidAscii(`graph LR; A --> B --> C`)
  • 브라우저 사용
    • CDN(unpkg, jsDelivr)을 통해 <script> 태그로 직접 로드 가능
    • 전역 객체 beautifulMermaid에서 renderMermaid, renderMermaidAscii, THEMES 등 접근 가능

ASCII 출력 및 옵션

  • Unicode 모드(기본)와 순수 ASCII 모드 지원
  • 옵션 항목
    • useAscii: ASCII 사용 여부
    • paddingX, paddingY: 노드 간 간격
    • boxBorderPadding: 노드 내부 여백
  • 예시 출력 ┌───┐ ┌───┐ │ A │────►│ B │ └───┘ └───┘

API 요약

  • renderMermaid(text, options?): Mermaid 다이어그램을 SVG로 렌더링
    • 옵션: bg, fg, accent, muted, surface, border, font, transparent
  • renderMermaidAscii(text, options?): ASCII/Unicode 텍스트로 렌더링
  • fromShikiTheme(theme): Shiki 테마에서 색상 추출
  • THEMES: 15개 내장 테마 객체
  • DEFAULTS: 기본 색상 (#FFFFFF, #27272A)

라이선스 및 제작

  • MIT 라이선스
  • Craft 팀 제작
  • ASCII 엔진 기반: Alexander Grooff의 mermaid-ascii

기술적 의의

  • AI 코딩 어시스턴트 환경에서 다이어그램을 터미널이나 채팅 인터페이스 내에서 즉시 시각화 가능
  • 경량·고속·무의존성 구조로, CLI 도구나 서버 환경에서도 활용도 높음
  • 테마 확장성과 호환성을 통해 개발자 경험 향상

Read Entire Article