# 在VS Code使用Mermaid 圖表製作與匯出教學
> 🚀 **使用 VS Code 開發環境進行 Mermaid 圖表製作的完整指南**
## 📋 目錄
- [什麼是 Mermaid](#什麼是-mermaid)
- [VS Code 環境設置](#vs-code-環境設置)
- [基礎語法](#基礎語法)
- [流程圖範例](#流程圖範例)
- [在 VS Code 中開發](#在-vs-code-中開發)
- [在 HackMD 中使用](#在-hackmd-中使用)
- [本地環境匯出圖檔](#本地環境匯出圖檔)
- [進階技巧](#進階技巧)
---
## 什麼是 Mermaid
Mermaid 是一個基於 JavaScript 的圖表和流程圖生成工具,讓你可以用簡單的文字語法創建複雜的圖表。
### 🎯 主要優勢
- ✅ **語法簡單**:用文字就能描述複雜圖表
- ✅ **版本控制友善**:純文字格式,易於 Git 管理
- ✅ **多平台支援**:GitHub、GitLab、HackMD 等都支援
- ✅ **VS Code 完美整合**:豐富的擴展支援和即時預覽
---
## VS Code 環境設置
### 🔧 必裝擴展
在 VS Code 中安裝以下擴展,獲得最佳的 Mermaid 開發體驗:
#### 1. **Mermaid Markdown Syntax Highlighting**
```
擴展 ID: bpruitt-goddard.mermaid-markdown-syntax-highlighting
```
- ✅ 提供 Mermaid 語法高亮
- ✅ 支援即時預覽功能
- ✅ 錯誤檢查和語法提示
#### 2. **Markdown Preview Enhanced**
```
擴展 ID: shd101wyy.markdown-preview-enhanced
```
- ✅ 強化 Markdown 預覽
- ✅ 完美支援 Mermaid 圖表
- ✅ 匯出多種格式(PDF、HTML、PNG)
#### 3. **Mermaid Preview**
```
擴展 ID: vstirbu.vscode-mermaid-preview
```
- ✅ 專門的 Mermaid 預覽窗格
- ✅ 支援 `.mmd` 檔案格式
- ✅ 即時同步更新
### ⚙️ VS Code 設定
在 `settings.json` 中添加以下設定:
```json
{
"mermaid.theme": "neutral",
"markdown-preview-enhanced.mermaidTheme": "neutral",
"markdown-preview-enhanced.codeBlockTheme": "github.css",
"files.associations": {
"*.mmd": "mermaid"
}
}
```
---
## 基礎語法
### 流程圖 (Flowchart)
```mermaid
flowchart TD
A[開始] --> B{是否登入?}
B -->|是| C[顯示主頁]
B -->|否| D[跳轉登入頁]
C --> E[結束]
D --> E
```
### 時序圖 (Sequence Diagram)
```mermaid
sequenceDiagram
participant A as 客戶端
participant B as 伺服器
participant C as 資料庫
A->>B: 發送請求
B->>C: 查詢資料
C-->>B: 回傳結果
B-->>A: 回應資料
```
### 類別圖 (Class Diagram)
```mermaid
classDiagram
class User {
+String name
+String email
+login()
+logout()
}
class Admin {
+String role
+manageUsers()
}
User <|-- Admin
```
---
## 流程圖範例:出差費用申請系統
這是一個實際的企業系統架構圖:
```mermaid
flowchart TB
HR[人力資源處]:::user
PR[公關部]:::user2
TRAVEL_WEB[出差費用申請系統]:::sys1
ESG_WEB[ESG WEB]:::sys2
ORACLE[Oracle<br>出差費用DB<br>(View 供查詢)]:::db
%% 人力資源處操作出差系統
HR --> TRAVEL_WEB
%% 公關部操作 ESG WEB
PR --> ESG_WEB
%% 前端直接查詢 Oracle
TRAVEL_WEB -- 讀寫/異動 --> ORACLE
ESG_WEB -- 唯讀查詢 View --> ORACLE
classDef user fill:#f9f9e8,stroke:#ffd700,stroke-width:1.5px;
classDef user2 fill:#f6f8fc,stroke:#99b3e6,stroke-width:1.5px;
classDef sys1 fill:#e8f3ff,stroke:#49a8ff,stroke-width:2px;
classDef sys2 fill:#e9faec,stroke:#4ad991,stroke-width:2px;
classDef db fill:#f3f3fb,stroke:#bc6aff,stroke-width:2px;
```
### 🎨 樣式說明
- **用戶角色**:黃色邊框,代表不同部門
- **系統應用**:藍色和綠色,區分不同系統
- **資料庫**:紫色邊框,表示資料存儲
---
## 在 VS Code 中開發
### 🎨 VS Code 開發流程
#### 1. **創建 Mermaid 檔案**
```bash
# 在 VS Code 中創建新檔案
新檔案 → 儲存為 diagram.mmd 或 diagram.md
```
#### 2. **即時預覽**
- **方法一**:`Ctrl+Shift+P` → 搜尋 "Mermaid: Preview"
- **方法二**:在 `.md` 檔案中按 `Ctrl+Shift+V` 預覽 Markdown
- **方法三**:右鍵點選檔案 → "Open Preview"
#### 3. **語法高亮與提示**
VS Code 會自動提供:
- 🎯 語法高亮顯示
- 🔍 錯誤檢查
- 💡 自動完成建議
- 📝 即時語法驗證
#### 4. **多窗格編輯**
```
編輯窗格 | 預覽窗格
---------|----------
程式碼 | 即時圖表
修改 | 自動更新
```
### 🚀 VS Code 快捷鍵
| 功能 | Windows/Linux | macOS |
|------|---------------|-------|
| 預覽 Markdown | `Ctrl+Shift+V` | `Cmd+Shift+V` |
| 開啟預覽到側邊 | `Ctrl+K V` | `Cmd+K V` |
| 命令面板 | `Ctrl+Shift+P` | `Cmd+Shift+P` |
| 格式化文檔 | `Shift+Alt+F` | `Shift+Option+F` |
### 💡 VS Code 實用技巧
#### 程式碼片段 (Snippets)
在 VS Code 中設定自訂程式碼片段:
```json
{
"Mermaid Flowchart": {
"prefix": "mermaid-flow",
"body": [
"```mermaid",
"flowchart TD",
" A[${1:開始}] --> B[${2:結束}]",
"```"
],
"description": "基礎 Mermaid 流程圖"
}
}
```
#### 檔案範本
建立 `.mmd` 檔案範本:
```mermaid
flowchart TD
%% 在這裡開始你的圖表
Start([開始]) --> End([結束])
```
#### Git 整合
- ✅ 版本控制追蹤圖表變更
- ✅ 分支比較圖表差異
- ✅ 協作開發圖表文檔
---
## 在 HackMD 中使用
### 1. 基本用法
在 HackMD 中,只需要用三個反引號包圍 `mermaid` 語法:
````markdown
```mermaid
flowchart TD
A[開始] --> B[結束]
```
````
### 2. 即時預覽
- 在編輯模式下,右側會即時顯示圖表
- 支援同步滾動,方便對照
### 3. 分享與協作
- 生成的 HackMD 連結可以直接分享
- 支援多人同時編輯
- 圖表會自動更新
---
## 本地環境匯出圖檔
### 📦 VS Code + Mermaid CLI 完整方案
#### 環境準備
```bash
# 1. 確認 Node.js 版本
node --version # 建議 18+
# 2. 在 VS Code 終端機中安裝 Mermaid CLI
npm install -g @mermaid-js/mermaid-cli
# 3. 驗證安裝
mmdc --version
```
#### VS Code 整合工作流程
1. **在 VS Code 中編輯**
- 建立 `.mmd` 檔案
- 使用語法高亮和即時預覽
- 利用 IntelliSense 避免語法錯誤
2. **使用內建終端機匯出**
- `Ctrl+`` (反引號) 開啟終端機
- 直接在專案目錄執行匯出指令
### 💾 VS Code 中的匯出流程
#### 1. 在 VS Code 中準備檔案
```mermaid
flowchart TD
A[開始] --> B[結束]
```
**儲存為**: `diagram.mmd` (VS Code 會自動識別格式)
#### 2. 使用 VS Code 整合終端機
按 `Ctrl+`` 開啟終端機,執行匯出指令:
```bash
# 匯出 PNG 圖片
mmdc -i diagram.mmd -o output.png -t neutral -b white
# 匯出 SVG 向量圖 (推薦)
mmdc -i diagram.mmd -o output.svg -t neutral -b white
# 匯出高解析度 PNG
mmdc -i diagram.mmd -o output_hd.png -t neutral -b white -s 2
```
#### 3. 參數說明
- `-i`: 輸入檔案
- `-o`: 輸出檔案
- `-t`: 主題 (neutral, dark, forest, base 等)
- `-b`: 背景顏色
- `-s`: 縮放比例 (用於高解析度)
### 🎯 VS Code 批次匯出
建立 VS Code Task 來自動化匯出過程:
#### `.vscode/tasks.json`
```json
{
"version": "2.0.0",
"tasks": [
{
"label": "Export Mermaid to PNG",
"type": "shell",
"command": "mmdc",
"args": [
"-i", "${file}",
"-o", "${fileDirname}/${fileBasenameNoExtension}.png",
"-t", "neutral",
"-b", "white"
],
"group": "build",
"presentation": {
"echo": true,
"reveal": "always",
"focus": false,
"panel": "shared"
}
},
{
"label": "Export Mermaid to SVG",
"type": "shell",
"command": "mmdc",
"args": [
"-i", "${file}",
"-o", "${fileDirname}/${fileBasenameNoExtension}.svg",
"-t", "neutral",
"-b": "white"
],
"group": "build"
}
]
}
```
**使用方式**:
1. 開啟 `.mmd` 檔案
2. `Ctrl+Shift+P` → "Tasks: Run Task"
3. 選擇 "Export Mermaid to PNG" 或 "Export Mermaid to SVG"
---
## 進階技巧
### 🎨 自定義樣式
```mermaid
flowchart TD
A[正常節點]
B[重要節點]:::important
C[警告節點]:::warning
A --> B
B --> C
classDef important fill:#e1f5fe,stroke:#01579b,stroke-width:3px
classDef warning fill:#fff3e0,stroke:#e65100,stroke-width:2px
```
### 🔗 添加連結
```mermaid
flowchart TD
A[GitHub] --> B[專案頁面]
click A "https://github.com" "GitHub 首頁"
click B "https://github.com/mermaid-js/mermaid" "Mermaid 專案"
```
### 📝 添加註解
```mermaid
flowchart TD
A[開始] --> B[處理]
B --> C[結束]
%% 這是註解,不會顯示在圖表中
%% 用於說明邏輯或提醒
```
### 🌟 複雜流程圖
```mermaid
flowchart TB
Start([開始]) --> Input[/輸入資料/]
Input --> Validate{資料驗證}
Validate -->|通過| Process[處理資料]
Validate -->|失敗| Error[顯示錯誤]
Process --> Save[(儲存到資料庫)]
Save --> Success[/成功訊息/]
Success --> End([結束])
Error --> End
style Start fill:#c8e6c9
style End fill:#ffcdd2
style Error fill:#ffebee,stroke:#f44336
```
---
## 📚 常用圖表類型
### Git Flow 圖
```mermaid
gitgraph
commit id: "Initial"
branch develop
checkout develop
commit id: "Feature A"
checkout main
merge develop
commit id: "Release v1.0"
```
### 甘特圖
```mermaid
gantt
title 專案時程規劃
dateFormat YYYY-MM-DD
section 開發階段
需求分析 :done, req, 2024-01-01, 2024-01-15
系統設計 :active, design, 2024-01-16, 2024-02-01
程式開發 :dev, 2024-02-01, 2024-03-15
測試階段 :test, after dev, 2024-04-01
```
### ER 圖
```mermaid
erDiagram
USER {
int id PK
string name
string email UK
}
ORDER {
int id PK
int user_id FK
datetime created_at
}
USER ||--o{ ORDER : places
```
---
## 🔧 疑難排解
### 常見問題
1. **圖表不顯示**
- 檢查語法是否正確
- 確認 HackMD 是否支援該圖表類型
2. **中文字顯示問題**
- HackMD 通常支援中文,本地匯出可能需要字型設定
3. **匯出圖片模糊**
- 使用 SVG 格式獲得最佳品質
- PNG 可以用 `-s 2` 參數提高解析度
### 最佳實踐
#### 🎯 VS Code 開發建議
- ✅ **使用工作區設定**:為專案建立專屬的 Mermaid 設定
- ✅ **版本控制**:將 `.mmd` 檔案納入 Git 管理
- ✅ **檔案組織**:建立 `docs/diagrams/` 資料夾統一管理
- ✅ **自動化**:設定 VS Code Tasks 簡化匯出流程
#### 📝 圖表設計原則
- ✅ 保持圖表簡潔,避免過於複雜
- ✅ 使用有意義的節點名稱
- ✅ 適當使用顏色和樣式區分元素
- ✅ 添加必要的註解說明
- ✅ 定期檢查圖表是否需要更新
### 🔧 VS Code 專案結構建議
```
project/
├── .vscode/
│ ├── settings.json # Mermaid 相關設定
│ └── tasks.json # 匯出自動化任務
├── docs/
│ └── diagrams/
│ ├── architecture.mmd
│ ├── workflow.mmd
│ └── exports/ # 匯出的圖片檔案
├── src/
└── README.md # 包含圖表的專案說明
```
---
## 🌐 實用資源
### 📚 官方資源
- [Mermaid 官方文檔](https://mermaid.js.org/)
- [Mermaid Live Editor](https://mermaid.live/) - 線上編輯器
- [更多圖表範例](https://mermaid.js.org/syntax/examples.html)
### 🔧 VS Code 擴展市集
- [Mermaid Markdown Syntax Highlighting](https://marketplace.visualstudio.com/items?itemName=bpruitt-goddard.mermaid-markdown-syntax-highlighting)
- [Markdown Preview Enhanced](https://marketplace.visualstudio.com/items?itemName=shd101wyy.markdown-preview-enhanced)
- [Mermaid Preview](https://marketplace.visualstudio.com/items?itemName=vstirbu.vscode-mermaid-preview)
### 🌐 整合平台
- [HackMD 使用指南](https://hackmd.io/features)
- [GitHub Mermaid 支援](https://github.blog/2022-02-14-include-diagrams-markdown-files-mermaid/)
- [GitLab Mermaid 支援](https://docs.gitlab.com/ee/user/markdown.html#mermaid)
---
## 📄 範本下載
你可以複製以下範本開始創建自己的圖表:
### 基礎流程圖範本
```mermaid
flowchart TD
Start([開始]) --> Step1[步驟一]
Step1 --> Decision{判斷條件}
Decision -->|是| Step2[步驟二A]
Decision -->|否| Step3[步驟二B]
Step2 --> End([結束])
Step3 --> End
```
### 系統架構圖範本
```mermaid
flowchart TB
User[使用者]:::user
Frontend[前端應用]:::frontend
Backend[後端服務]:::backend
Database[(資料庫)]:::database
User --> Frontend
Frontend --> Backend
Backend --> Database
classDef user fill:#e3f2fd,stroke:#1976d2
classDef frontend fill:#f3e5f5,stroke:#7b1fa2
classDef backend fill:#e8f5e8,stroke:#388e3c
classDef database fill:#fff3e0,stroke:#f57c00
```
> 💡 **VS Code 完整工作流程**:在 VS Code 中編輯和預覽 → 本地匯出圖檔 → 複製到 HackMD 分享 → Git 版本控制管理
### 🚀 快速開始檢查清單
- [ ] 安裝 VS Code 和相關擴展
- [ ] 設定 VS Code Mermaid 環境
- [ ] 安裝 Node.js 和 Mermaid CLI
- [ ] 建立專案資料夾結構
- [ ] 設定 VS Code Tasks 自動化
- [ ] 測試圖表預覽和匯出功能
- [ ] 準備 HackMD 帳號用於分享
---
*最後更新:2025年10月 | 專為 VS Code 開發環境優化*