Markdown문법으로 Flowchart나 Erd와 같은 그래프를 그릴 수 있다는 사실!
요즘 Gitlab을 사용하면서 Gitlab Docs에 자주 들락거리는데, 마크다운으로 차트를 그릴 수 있는 Mermaid 라이브러리를 알게되었다.
이때까지 그래프는 DB diagram에서 작성한 것을 캡쳐해서 넣거나 피그마로 그려서 이용해야한다 생각했는데 이런 게 있었다니.. 까먹기 전에 호딱 정리해 보려 한다.

자바스크립트 기반으로 만들어졌다는 점. 딱히 자바스크립트 문법이 들어간 것은 아니다. 그래도 Gitlab Docs에서 소개하는 그래프 툴들 중에 가장 친숙했다.
Markdown Preview Mermaid Support를 설치하면 바로 Preview를 통해 Markdown으로 그래프를 확인하며 바로 작성할 수 있다.


# NPM
npm install mermaid
# Yarn
yarn add mermaid
# PNPM
pnpm add mermaid
id는 한 노드(=박스)를 뜻한다. 보통 A, B, C로 많이 사용한다.작성 방법
// mermaid.js
// 선언 1
flowchart LR
id
// 선언 2
graph LR
id
[] 또는 소괄호() 를 활용해준다. 문자열을 넣을 경우 ""를 사용한다.// mermaid.js
// 대괄호
flowchart LR
id["Hello"]
// 소괄호
flowchart LR
id("Hello")
Preview

"``" 요런 형태!%%{init: {"flowchart": {"htmlLabels": false}} }%% 코드는 차트 형태를 변하게 해 주는 코드이므로 지금 단계에서는 신경 안 써도 된다. 그래도 궁금하면 여기 들어가서 한 번 읽고 오기// mermaid.js
%%{init: {"flowchart": {"htmlLabels": false}} }%%
flowchart LR
markdown["`This **is** _Markdown_`"]
newLines["`Line1
Line 2
Line 3`"]
markdown --> newLines
Preview
-로 노드끼리 연결이 가능하다.flowchart LR
A --- B
flowchart LR
A--->|"화살표로 연결"|B
A---C
B--->D
D--->B
Preview

flowchart LR
A["큰 토끼🐰"]--->|"토끼가 좋아하는 것"|B
A---C("작은 토끼🐰")
B(["당근🥕"])--->D(["토끼풀☘️"])
D--->B
Preview

TD, TB를 사용하면 위에서 아래로, LR은 왼쪽에서 오른쪽으로 화살표를 보낸다.위에서 아래
flowchart TD
Start --> Stop
왼쪽에서 오른쪽
flowchart LR
Start --> Stop
Preview

| 기호로 텍스트를 넣을 수 있다.flowchart LR
A--->|This is the text|B
그 외 점선으로 보내기, 선 굵게하기 등 아래 문법 설명은 해당 링크 참고
// 점선으로 화살표 보내기
flowchart LR
A-.->B;
// 점선에 문자 넣기
flowchart LR
A-. text .-> B
// 굵은 화살표 보내기
flowchart LR
A == text ==> B
// 체이닝 화살표
flowchart LR
A -- text --> B -- text2 --> C
// 여러개 연결하기1
flowchart LR
a --> b & c--> d
// 여러개 연결하기2
flowchart TB
A & B--> C & D
Preview

TB - Top to bottomTD - Top-down/ same as top to bottomBT - Bottom to topRL - Right to leftLR - Left to rightflowchart LR
id1("A node with round edges")
id2(["A stadium-shaped node"])
id3[["A node in a subroutine shape"]]
id4[("Database")]
Preview id1부터 id4
end를 사용할 때 전체 소문자로 사용해야한다. End 또는 END 사용 시 에러발생!flowchart TB
c1-->a2
subgraph one
a1-->a2
End
subgraph two
b1-->b2
End
subgraph three
c1-->c2
End

%%{init: {"flowchart": {"defaultRenderer": "elk"}} }%%

좋네요. 정리 감사합니다.