initial commit
9
.vscode/extensions.json
vendored
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"recommendations": [
|
||||||
|
"davidanson.vscode-markdownlint",
|
||||||
|
"mhutchie.git-graph",
|
||||||
|
"ms-ceintl.vscode-language-pack-de",
|
||||||
|
"tomoki1207.pdf",
|
||||||
|
"yzhang.markdown-all-in-one"
|
||||||
|
]
|
||||||
|
}
|
BIN
.vscode/extensions.txt
vendored
Normal file
0
.vscode/launch.json
vendored
Normal file
BIN
assets/favicon.ico
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
assets/favicon_mermaid_128x128.png
Normal file
After Width: | Height: | Size: 9.9 KiB |
BIN
assets/favicon_mermaid_16x16.png
Normal file
After Width: | Height: | Size: 647 B |
BIN
assets/favicon_mermaid_32x32.png
Normal file
After Width: | Height: | Size: 1.6 KiB |
BIN
assets/favicon_mermaid_64x64.png
Normal file
After Width: | Height: | Size: 3.8 KiB |
BIN
assets/logo-bright-alpha.png
Normal file
After Width: | Height: | Size: 1.4 MiB |
BIN
assets/logo-dark-alpha.png
Normal file
After Width: | Height: | Size: 1.4 MiB |
BIN
assets/logo-icon-basis.png
Normal file
After Width: | Height: | Size: 1.4 MiB |
BIN
assets/logo.png
Normal file
After Width: | Height: | Size: 954 KiB |
29
demo.html
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<!-- Externes JS einbinden -->
|
||||||
|
<script type="module">
|
||||||
|
import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@11/dist/mermaid.esm.min.mjs';
|
||||||
|
mermaid.initialize({ startOnLoad: true });
|
||||||
|
</script>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<!-- ab hier, innerhalb der mermaid-class, einfach den mermaid Code einfügen -->
|
||||||
|
<div class="mermaid">
|
||||||
|
flowchart TD
|
||||||
|
Start([Start])
|
||||||
|
Init[summe = 0]
|
||||||
|
Schleife{Liste leer?}
|
||||||
|
Hole[Hole nächstes Element]
|
||||||
|
Addiere[summe += zahl]
|
||||||
|
Ende([return summe])
|
||||||
|
|
||||||
|
Start --> Init --> Schleife
|
||||||
|
Schleife -- Nein --> Hole --> Addiere --> Schleife
|
||||||
|
Schleife -- Ja --> Ende
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
865
mermaid.md
Normal file
@ -0,0 +1,865 @@
|
|||||||
|
|
||||||
|
# ⚙️ Mermaid Crashkurs
|
||||||
|
|
||||||
|
## 📄 **Mermaid Cheat Sheet (Deutsch)**
|
||||||
|
|
||||||
|
## ⚓ Inhalt
|
||||||
|
|
||||||
|
- [⚙️ Mermaid Crashkurs](#️-mermaid-crashkurs)
|
||||||
|
- [📄 **Mermaid Cheat Sheet (Deutsch)**](#-mermaid-cheat-sheet-deutsch)
|
||||||
|
- [⚓ Inhalt](#-inhalt)
|
||||||
|
- [➖ Was ist Mermaid](#-was-ist-mermaid)
|
||||||
|
- [➖ Was macht Mermaid?](#-was-macht-mermaid)
|
||||||
|
- [➖ Vorteile](#-vorteile)
|
||||||
|
- [➖ Typische Anwendungsfälle](#-typische-anwendungsfälle)
|
||||||
|
- [➖ Beispiel](#-beispiel)
|
||||||
|
- [➖ Beispiel-Code: Summiere eine Liste](#-beispiel-code-summiere-eine-liste)
|
||||||
|
- [Diagramme](#diagramme)
|
||||||
|
- [➖ Flussdiagramm (`flowchart`)](#-flussdiagramm-flowchart)
|
||||||
|
- [➖ Klassendiagramm (`classDiagram`)](#-klassendiagramm-classdiagram)
|
||||||
|
- [➖ Zustandsdiagramm (`stateDiagram`)](#-zustandsdiagramm-statediagram)
|
||||||
|
- [➖ Entscheidungsdiagramm (`flowchart` mit Bedingungen)](#-entscheidungsdiagramm-flowchart-mit-bedingungen)
|
||||||
|
- [➖ Subgraphen (z. B. Module, Gruppen)](#-subgraphen-zb-module-gruppen)
|
||||||
|
- [➖ Weitere: Gantt-, Pie- \& ER-Diagramme](#-weitere-gantt--pie---er-diagramme)
|
||||||
|
- [➖ Erklärung](#-erklärung)
|
||||||
|
- [➖ Visualisierung/ Rendering](#-visualisierung-rendering)
|
||||||
|
- [➖ Gängige Symbole (Unicode sicher)](#-gängige-symbole-unicode-sicher)
|
||||||
|
- [➖ Diagramm-Layout und Styling-Optionen](#-diagramm-layout-und-styling-optionen)
|
||||||
|
- [Mermaid `style`-Eigenschaften (Übersicht)](#mermaid-style-eigenschaften-übersicht)
|
||||||
|
- [Beispiel mit mehreren Eigenschaften](#beispiel-mit-mehreren-eigenschaften)
|
||||||
|
- [➖ Interaktive Features \& Erweiterte Syntax](#-interaktive-features--erweiterte-syntax)
|
||||||
|
- [➖ Klickbare Knoten](#-klickbare-knoten)
|
||||||
|
- [➖ Tooltip mit `click` kombinieren](#-tooltip-mit-click-kombinieren)
|
||||||
|
- [➖ Ankerpunkte / Subgraph-Steuerung](#-ankerpunkte--subgraph-steuerung)
|
||||||
|
- [➖ Weitere Optionen](#-weitere-optionen)
|
||||||
|
- [➖ Anmerkungen](#-anmerkungen)
|
||||||
|
- [➖ Testing-Setup \& CI-Integration](#-testing-setup--ci-integration)
|
||||||
|
- [➖ Mermaid CLI (`@mermaid-js/mermaid-cli`)](#-mermaid-cli-mermaid-jsmermaid-cli)
|
||||||
|
- [➖ Beispiel: Einfache .mmd-Datei](#-beispiel-einfache-mmd-datei)
|
||||||
|
- [➖ Typische Optionen](#-typische-optionen)
|
||||||
|
- [➖ Automatisierung mit Makefile](#-automatisierung-mit-makefile)
|
||||||
|
- [➖ CI-Beispiel (GitHub Actions)](#-ci-beispiel-github-actions)
|
||||||
|
- [📌 Hinweis](#-hinweis)
|
||||||
|
- [➖ Diagramm-Export / Automatisierung](#-diagramm-export--automatisierung)
|
||||||
|
- [➖ Export mit Mermaid CLI](#-export-mit-mermaid-cli)
|
||||||
|
- [➖ Installation](#-installation)
|
||||||
|
- [🛠 Typische Optionen](#-typische-optionen-1)
|
||||||
|
- [➖ Beispiel: SVG aus `.mmd` erzeugen](#-beispiel-svg-aus-mmd-erzeugen)
|
||||||
|
- [➖ Struktur im Projekt](#-struktur-im-projekt)
|
||||||
|
- [➖ Makefile-Beispiel](#-makefile-beispiel)
|
||||||
|
- [➖ GitHub Actions-Beispiel](#-github-actions-beispiel)
|
||||||
|
- [➖ Hinweise](#-hinweise)
|
||||||
|
- [➖ Template \& Projektintegration](#-template--projektintegration)
|
||||||
|
- [➖ Ablauf](#-ablauf)
|
||||||
|
- [🛠 Tools](#-tools)
|
||||||
|
- [Links](#links)
|
||||||
|
- [✏️ Notizen bei Erstellung dieses Dokuments](#️-notizen-bei-erstellung-dieses-dokuments)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ➖ Was ist Mermaid
|
||||||
|
|
||||||
|
**Mermaid** ist eine deklarative Scriptsprache zur Erstellung von Diagrammen und Visualisierungen auf Basis von **einfachem Text**. Sie wurde entwickelt, um komplexe Abläufe, Strukturen und Beziehungen direkt aus Quellcode-artiger Notation zu **automatisch generierten Diagrammen** umzuwandeln – ohne grafische Tools oder spezielle Software.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### ➖ Was macht Mermaid?
|
||||||
|
|
||||||
|
- Generiert **Flowcharts**, **Klassendiagramme**, **Zustandsautomaten**, **Gantt-Diagramme**, **Entscheidungsbäume**, **Entity-Relationship-Diagramme** u.v.m.
|
||||||
|
- Nutzt eine **einfach lesbare Syntax** ähnlich wie Markdown oder Code
|
||||||
|
- Eignet sich ideal zur Dokumentation von **Software**, **Prozessen**, **Systemarchitekturen** und **Ablauflogiken**
|
||||||
|
- Kann direkt in viele Tools eingebettet werden (z. B. GitHub, VS Code, MkDocs, Obsidian)
|
||||||
|
- Unterstützt **Versionierung**, **Code-first-Dokumentation** und ist vollständig **plattformunabhängig**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### ➖ Vorteile
|
||||||
|
|
||||||
|
- Kein Drag & Drop – **alles in Text**
|
||||||
|
- Leicht in Git-Projekte integrierbar
|
||||||
|
- Wartbar, automatisierbar, CI/CD-fähig
|
||||||
|
- Unterstützt **Unicode-Symbole**, Farben, Subgraphen und Labels
|
||||||
|
- Ideal für Entwickler, Techniker und Dokumentationszwecke
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### ➖ Typische Anwendungsfälle
|
||||||
|
|
||||||
|
- Darstellung von **Funktionsabläufen**
|
||||||
|
- Visualisierung von **Code-Logik** und **Bedingungen**
|
||||||
|
- Modellierung von **Klassenhierarchien** oder **Zuständen**
|
||||||
|
- Erstellung von **technischen Spezifikationen**
|
||||||
|
- Unterstützung bei **Team-Kommunikation** und **Code Reviews**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Beispieldiagram:**
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
flowchart TD
|
||||||
|
%% Grundstruktur
|
||||||
|
Start([Start])
|
||||||
|
Entscheidung{Bedingung erfüllt?}
|
||||||
|
Aktion1[Aktion bei Ja]
|
||||||
|
Aktion2[Aktion bei Nein]
|
||||||
|
Ende([Ende])
|
||||||
|
|
||||||
|
%% Verbindungen
|
||||||
|
Start --> Entscheidung
|
||||||
|
Entscheidung -- Ja --> Aktion1 --> Ende
|
||||||
|
Entscheidung -- Nein --> Aktion2 --> Ende
|
||||||
|
```
|
||||||
|
|
||||||
|
[⚓ Inhalt](#-inhalt)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### ➖ Beispiel
|
||||||
|
|
||||||
|
Exemplarisch ein kleines Programm als **Mermaid-Ablaufdiagramm**.
|
||||||
|
Wir nehmen dazu ein simples Beispiel in Python:
|
||||||
|
|
||||||
|
#### ➖ Beispiel-Code: Summiere eine Liste
|
||||||
|
|
||||||
|
**Python-Code:**
|
||||||
|
|
||||||
|
```python
|
||||||
|
def summiere_liste(liste):
|
||||||
|
summe = 0
|
||||||
|
for zahl in liste:
|
||||||
|
summe += zahl
|
||||||
|
return summe
|
||||||
|
```
|
||||||
|
|
||||||
|
**Das gleiche in Mermaid-Code:**
|
||||||
|
|
||||||
|
```plaintext (mermaid)
|
||||||
|
flowchart TD
|
||||||
|
Start([Start])
|
||||||
|
Init[summe = 0]
|
||||||
|
Schleife{Liste leer?}
|
||||||
|
Hole[Hole nächstes Element]
|
||||||
|
Addiere[summe += zahl]
|
||||||
|
Ende([return summe])
|
||||||
|
|
||||||
|
Start --> Init --> Schleife
|
||||||
|
Schleife -- Nein --> Hole --> Addiere --> Schleife
|
||||||
|
Schleife -- Ja --> Ende
|
||||||
|
```
|
||||||
|
|
||||||
|
**Ergibt dann gerendert:**
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
flowchart TD
|
||||||
|
Start([Start])
|
||||||
|
Init[summe = 0]
|
||||||
|
Schleife{Liste leer?}
|
||||||
|
Hole[Hole nächstes Element]
|
||||||
|
Addiere[summe += zahl]
|
||||||
|
Ende([return summe])
|
||||||
|
|
||||||
|
Start --> Init --> Schleife
|
||||||
|
Schleife -- Nein --> Hole --> Addiere --> Schleife
|
||||||
|
Schleife -- Ja --> Ende
|
||||||
|
```
|
||||||
|
|
||||||
|
[⚓ Inhalt](#-inhalt)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Diagramme
|
||||||
|
|
||||||
|
#### ➖ Flussdiagramm (`flowchart`)
|
||||||
|
|
||||||
|
**Code:**
|
||||||
|
|
||||||
|
```plaintext (mermaid)
|
||||||
|
flowchart TD
|
||||||
|
Start([Start])
|
||||||
|
Entscheidung{Bedingung erfüllt?}
|
||||||
|
Aktion1[Aktion bei Ja]
|
||||||
|
Aktion2[Aktion bei Nein]
|
||||||
|
Ende([Ende])
|
||||||
|
|
||||||
|
Start --> Entscheidung
|
||||||
|
Entscheidung -- Ja --> Aktion1 --> Ende
|
||||||
|
Entscheidung -- Nein --> Aktion2 --> Ende
|
||||||
|
```
|
||||||
|
|
||||||
|
**Ausgabe:**
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
flowchart TD
|
||||||
|
Start([Start])
|
||||||
|
Entscheidung{Bedingung erfüllt?}
|
||||||
|
Aktion1[Aktion bei Ja]
|
||||||
|
Aktion2[Aktion bei Nein]
|
||||||
|
Ende([Ende])
|
||||||
|
|
||||||
|
Start --> Entscheidung
|
||||||
|
Entscheidung -- Ja --> Aktion1 --> Ende
|
||||||
|
Entscheidung -- Nein --> Aktion2 --> Ende
|
||||||
|
```
|
||||||
|
|
||||||
|
**Richtungen:**
|
||||||
|
|
||||||
|
- `TD` = oben nach unten (Top → Down)
|
||||||
|
- `LR` = links nach rechts (Left → Right)
|
||||||
|
- `BT` = unten nach oben (Bottom → Top)
|
||||||
|
- `RL` = rechts nach links (Right → Left)
|
||||||
|
|
||||||
|
**Knotenformen:**
|
||||||
|
|
||||||
|
| Syntax | Bedeutung |
|
||||||
|
| --------------- | -------------------- |
|
||||||
|
| `A[Text]` | Rechteck (Prozess) |
|
||||||
|
| `A((Text))` | Kreis (Start/Ende) |
|
||||||
|
| `A{Bedingung?}` | Raute (Entscheidung) |
|
||||||
|
| `A>"Text"]` | Subprozess |
|
||||||
|
| `A["Text"]` | Textblock |
|
||||||
|
|
||||||
|
**Verbindungen:**
|
||||||
|
|
||||||
|
- `A --> B` → gerichteter Pfeil
|
||||||
|
- `A -- Text --> B` → beschrifteter Pfeil
|
||||||
|
- `A -.-> B` → gestrichelte Linie
|
||||||
|
- `A ===> B` → dicker Pfeil
|
||||||
|
|
||||||
|
[⚓ Inhalt](#-inhalt)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
#### ➖ Klassendiagramm (`classDiagram`)
|
||||||
|
|
||||||
|
**Code:**
|
||||||
|
|
||||||
|
```plaintext (mermaid)
|
||||||
|
classDiagram
|
||||||
|
class Fahrzeug {
|
||||||
|
+String marke
|
||||||
|
+fahre()
|
||||||
|
}
|
||||||
|
class Auto {
|
||||||
|
+int tueranzahl
|
||||||
|
}
|
||||||
|
Fahrzeug <|-- Auto
|
||||||
|
```
|
||||||
|
|
||||||
|
**Ausgabe:**
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
classDiagram
|
||||||
|
class Fahrzeug {
|
||||||
|
+String marke
|
||||||
|
+fahre()
|
||||||
|
}
|
||||||
|
class Auto {
|
||||||
|
+int tueranzahl
|
||||||
|
}
|
||||||
|
Fahrzeug <|-- Auto
|
||||||
|
```
|
||||||
|
|
||||||
|
**Beziehungen:**
|
||||||
|
|
||||||
|
- `<|--` → Vererbung
|
||||||
|
- `*--` → Komposition
|
||||||
|
- `o--` → Aggregation
|
||||||
|
- `--` → Assoziation
|
||||||
|
|
||||||
|
[⚓ Inhalt](#-inhalt)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
#### ➖ Zustandsdiagramm (`stateDiagram`)
|
||||||
|
|
||||||
|
**Code:**
|
||||||
|
|
||||||
|
```plaintext (mermaid)
|
||||||
|
stateDiagram-v2
|
||||||
|
[*] --> Wartend
|
||||||
|
Wartend --> Aktiv : start()
|
||||||
|
Aktiv --> Wartend : stop()
|
||||||
|
Aktiv --> [*]
|
||||||
|
```
|
||||||
|
|
||||||
|
**Ausgabe:**
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
stateDiagram-v2
|
||||||
|
[*] --> Wartend
|
||||||
|
Wartend --> Aktiv : start()
|
||||||
|
Aktiv --> Wartend : stop()
|
||||||
|
Aktiv --> [*]
|
||||||
|
```
|
||||||
|
|
||||||
|
[⚓ Inhalt](#-inhalt)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
#### ➖ Entscheidungsdiagramm (`flowchart` mit Bedingungen)
|
||||||
|
|
||||||
|
**Code:**
|
||||||
|
|
||||||
|
```plaintext (mermaid)
|
||||||
|
flowchart TD
|
||||||
|
A{Ist x > 10?}
|
||||||
|
A -- Ja --> B[Ausgabe: Groß]
|
||||||
|
A -- Nein --> C[Ausgabe: Klein]
|
||||||
|
```
|
||||||
|
|
||||||
|
**Ausgabe:**
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
flowchart TD
|
||||||
|
A{Ist x > 10?}
|
||||||
|
A -- Ja --> B[Ausgabe: Groß]
|
||||||
|
A -- Nein --> C[Ausgabe: Klein]
|
||||||
|
```
|
||||||
|
|
||||||
|
[⚓ Inhalt](#-inhalt)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
#### ➖ Subgraphen (z. B. Module, Gruppen)
|
||||||
|
|
||||||
|
**Code:**
|
||||||
|
|
||||||
|
```plaintext (mermaid)
|
||||||
|
flowchart TD
|
||||||
|
subgraph ModulA
|
||||||
|
A1 --> A2
|
||||||
|
end
|
||||||
|
subgraph ModulB
|
||||||
|
B1 --> B2
|
||||||
|
end
|
||||||
|
A2 --> B1
|
||||||
|
```
|
||||||
|
|
||||||
|
**Ausgabe:**
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
flowchart TD
|
||||||
|
subgraph ModulA
|
||||||
|
A1 --> A2
|
||||||
|
end
|
||||||
|
subgraph ModulB
|
||||||
|
B1 --> B2
|
||||||
|
end
|
||||||
|
A2 --> B1
|
||||||
|
```
|
||||||
|
|
||||||
|
[⚓ Inhalt](#-inhalt)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
#### ➖ Weitere: Gantt-, Pie- & ER-Diagramme
|
||||||
|
|
||||||
|
- `gantt` für Zeitplanung
|
||||||
|
- `pie` für Verhältnisdarstellungen
|
||||||
|
- `erDiagram` für Entitäten & Datenbanken
|
||||||
|
|
||||||
|
[⚓ Inhalt](#-inhalt)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### ➖ Erklärung
|
||||||
|
|
||||||
|
- **Start** → Initialisierung
|
||||||
|
- **Schleife** prüft, ob noch Elemente vorhanden sind
|
||||||
|
- Wenn **Nein**, wird das nächste Element geholt und aufaddiert
|
||||||
|
- Wenn **Ja**, wird die Schleife beendet und `summe` zurückgegeben
|
||||||
|
|
||||||
|
[⚓ Inhalt](#-inhalt)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ➖ Visualisierung/ Rendering
|
||||||
|
|
||||||
|
- [x] **<https://mermaid.live>**
|
||||||
|
- Vollständig browserbasiert, keine Installation
|
||||||
|
- Sofortige Vorschau
|
||||||
|
- Export als PNG, SVG, PDF
|
||||||
|
- Speichern & Teilen von Diagrammen
|
||||||
|
- [x] **Eingebettet in HTML**
|
||||||
|
- Die Datei [`demo.html`](demo.html) zeigt wie dies erfolgen könnte.
|
||||||
|
- [x] **In VS-Code** (nur lokal)
|
||||||
|
- 📦 „**Markdown Preview Mermaid Support**" (Autor: bierner oder vhatpal)
|
||||||
|
Damit kannst du in Markdown-Dateien Mermaid-Diagramme live in der Vorschau anzeigen lassen:
|
||||||
|
Öffne .md-Datei
|
||||||
|
> `Ctrl+Shift+V` oder rechtsklick → Markdown-Vorschau öffnen
|
||||||
|
|
||||||
|
[⚓ Inhalt](#-inhalt)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ➖ Gängige Symbole (Unicode sicher)
|
||||||
|
|
||||||
|
| Symbol | Bedeutung |
|
||||||
|
| ------ | ---------------- |
|
||||||
|
| ⚙ | Prozess |
|
||||||
|
| ✔ | Erfolgreich |
|
||||||
|
| ✖ | Fehler / Abbruch |
|
||||||
|
| ℹ | Info / Hinweis |
|
||||||
|
| ⏳ | Warten / Delay |
|
||||||
|
|
||||||
|
```plaintext (mermaid)
|
||||||
|
flowchart LR
|
||||||
|
Start((⚙ Start))
|
||||||
|
Prozess1[✔ OK]
|
||||||
|
Fehler[✖ Fehler]
|
||||||
|
Start --> Prozess1 --> Fehler
|
||||||
|
```
|
||||||
|
|
||||||
|
**Ausgabe:**
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
flowchart LR
|
||||||
|
Start((⚙ Start))
|
||||||
|
Prozess1[✔ OK]
|
||||||
|
Fehler[✖ Fehler]
|
||||||
|
Start --> Prozess1 --> Fehler
|
||||||
|
```
|
||||||
|
|
||||||
|
[⚓ Inhalt](#-inhalt)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ➖ Diagramm-Layout und Styling-Optionen
|
||||||
|
|
||||||
|
Mermaid erlaubt die **Anpassung von Farben, Fonts, Ausrichtung und Stilen** über einfache Inline-Befehle:
|
||||||
|
|
||||||
|
**Code:**
|
||||||
|
|
||||||
|
```plaintext (mermaid)
|
||||||
|
flowchart TD
|
||||||
|
Start([Gestylter Start])
|
||||||
|
style Start fill:#f9f,stroke:#333,stroke-width:2px
|
||||||
|
```
|
||||||
|
|
||||||
|
**Ausgabe:**
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
flowchart TD
|
||||||
|
Start([Gestylter Start])
|
||||||
|
style Start fill:#f9f,stroke:#333,stroke-width:2px
|
||||||
|
```
|
||||||
|
|
||||||
|
### Mermaid `style`-Eigenschaften (Übersicht)
|
||||||
|
|
||||||
|
| Eigenschaft | Beschreibung | Beispiel |
|
||||||
|
| ------------------ | ------------------------------------- | ----------------------- |
|
||||||
|
| `fill` | Hintergrundfarbe | `fill:#f9f` |
|
||||||
|
| `stroke` | Rahmenfarbe | `stroke:#333` |
|
||||||
|
| `stroke-width` | Rahmenstärke | `stroke-width:2px` |
|
||||||
|
| `color` | Textfarbe | `color:#000000` |
|
||||||
|
| `font-size` | Schriftgröße | `font-size:14px` |
|
||||||
|
| `font-family` | Schriftart | `font-family:monospace` |
|
||||||
|
| `font-weight` | Schriftstil (z. B. `bold`, `normal`) | `font-weight:bold` |
|
||||||
|
| `background-color` | Alternativ zu `fill` (seltener nötig) | `background-color:#eee` |
|
||||||
|
| `opacity` | Transparenz (0 bis 1) | `opacity:0.8` |
|
||||||
|
| `text-align` | Textausrichtung innerhalb des Knotens | `text-align:center` |
|
||||||
|
| `rx`, `ry` | Rundung der Ecken | `rx:10`, `ry:10` |
|
||||||
|
|
||||||
|
### Beispiel mit mehreren Eigenschaften
|
||||||
|
|
||||||
|
**Code:**
|
||||||
|
|
||||||
|
```plaintext (mermaid)
|
||||||
|
flowchart TD
|
||||||
|
Wichtig([⚠ Kritischer Pfad])
|
||||||
|
style Wichtig fill:#ffe6e6,stroke:#cc0000,stroke-width:2px,color:#000,font-weight:bold
|
||||||
|
```
|
||||||
|
|
||||||
|
**Ausgabe:**
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
flowchart TD
|
||||||
|
Wichtig([⚠ Kritischer Pfad])
|
||||||
|
style Wichtig fill:#ffe6e6,stroke:#cc0000,stroke-width:2px,color:#000,font-weight:bold
|
||||||
|
```
|
||||||
|
|
||||||
|
**🔧 Hinweis:**
|
||||||
|
|
||||||
|
- Die style-Anweisung wirkt nur auf den genannten Knoten (`style <ID>` ...)
|
||||||
|
- Du kannst mehrere style-Zeilen einfügen
|
||||||
|
- Unterstützt nur Grundwerte, kein CSS-Selektor, kein hover, keine Klassen
|
||||||
|
|
||||||
|
[⚓ Inhalt](#-inhalt)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ➖ Interaktive Features & Erweiterte Syntax
|
||||||
|
|
||||||
|
Mermaid erlaubt einfache Interaktionen direkt im Diagramm. Besonders hilfreich für Dokumentationen, Präsentationen oder klickbare Projektübersichten.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### ➖ Klickbare Knoten
|
||||||
|
|
||||||
|
**Du kannst Knoten interaktiv machen, indem du sie mit Links versiehst:**
|
||||||
|
|
||||||
|
**Code:**
|
||||||
|
|
||||||
|
```plaintext (mermaid)
|
||||||
|
flowchart TD
|
||||||
|
Info([ℹ Dokumentation])
|
||||||
|
click Info "https://example.com/doku" "Mehr zur Doku"
|
||||||
|
```
|
||||||
|
|
||||||
|
**Ausgabe:**
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
flowchart TD
|
||||||
|
Info([ℹ Dokumentation])
|
||||||
|
click Info "https://example.com/doku" "Mehr zur Doku"
|
||||||
|
```
|
||||||
|
|
||||||
|
> **Hinweis:** Das funktioniert nur in Umgebungen, die `click` unterstützen (z. B. HTML-Embedding oder Mermaid Live Editor, nicht in GitHub-Rendern).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### ➖ Tooltip mit `click` kombinieren
|
||||||
|
|
||||||
|
**Code:**
|
||||||
|
|
||||||
|
```plaintext (mermaid)
|
||||||
|
flowchart TD
|
||||||
|
Hilfe([ℹ Hilfe anzeigen])
|
||||||
|
click Hilfe "https://example.com/hilfe" "Öffnet die Hilfeseite"
|
||||||
|
```
|
||||||
|
|
||||||
|
**Ausgabe:**
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
flowchart TD
|
||||||
|
Hilfe([ℹ Hilfe anzeigen])
|
||||||
|
click Hilfe "https://example.com/hilfe" "Öffnet die Hilfeseite"
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### ➖ Ankerpunkte / Subgraph-Steuerung
|
||||||
|
|
||||||
|
**Subgraphen lassen sich interaktiv strukturieren – z. B. als Module oder Zuständigkeiten:**
|
||||||
|
|
||||||
|
**Code:**
|
||||||
|
|
||||||
|
```plaintext (mermaid)
|
||||||
|
flowchart TB
|
||||||
|
subgraph Backend [Backend-Systeme]
|
||||||
|
DB[(PostgreSQL DB)]
|
||||||
|
API[REST API]
|
||||||
|
end
|
||||||
|
|
||||||
|
subgraph Frontend [Client]
|
||||||
|
UI[Benutzeroberfläche]
|
||||||
|
end
|
||||||
|
|
||||||
|
UI --> API --> DB
|
||||||
|
click UI "https://frontend.example.com" "Zur Benutzeroberfläche"
|
||||||
|
click DB "https://db-docs.example.com" "DB-Doku"
|
||||||
|
```
|
||||||
|
|
||||||
|
**Ausgabe:**
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
flowchart TB
|
||||||
|
subgraph Backend [Backend-Systeme]
|
||||||
|
DB[(PostgreSQL DB)]
|
||||||
|
API[REST API]
|
||||||
|
end
|
||||||
|
|
||||||
|
subgraph Frontend [Client]
|
||||||
|
UI[Benutzeroberfläche]
|
||||||
|
end
|
||||||
|
|
||||||
|
UI --> API --> DB
|
||||||
|
click UI "https://frontend.example.com" "Zur Benutzeroberfläche"
|
||||||
|
click DB "https://db-docs.example.com" "DB-Doku"
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### ➖ Weitere Optionen
|
||||||
|
|
||||||
|
| Funktion | Beschreibung | Beispiel |
|
||||||
|
|--------------|--------------------------------------|--------------------------------------------------------|
|
||||||
|
| `click` | Knoten klickbar machen | `click ID "https://..." "Tooltip"` |
|
||||||
|
| `tooltip` | Tooltip anzeigen (oft via `click`) | Bestandteil von `click`, kein eigener Befehl |
|
||||||
|
| `linkStyle` | Stil für Link-Linien setzen | `linkStyle 0 stroke:#f66,stroke-width:2px` |
|
||||||
|
| `subgraph` | Gruppe von Elementen darstellen | `subgraph Name` … `end` |
|
||||||
|
| `style` | Styling eines Knotens | `style KnotenID fill:#eee,stroke:#000` |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### ➖ Anmerkungen
|
||||||
|
|
||||||
|
- In Markdown-Dokumenten (z. B. GitHub READMEs) **funktionieren `click`-Links meist nicht**, da Mermaid dort ohne JS läuft.
|
||||||
|
- Für interaktive Versionen → HTML exportieren oder Mermaid Live Editor nutzen.
|
||||||
|
- Tooltips erscheinen nur bei aktiver `click`-Anweisung.
|
||||||
|
|
||||||
|
[⚓ Inhalt](#-inhalt)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ➖ Testing-Setup & CI-Integration
|
||||||
|
|
||||||
|
Mermaid-Diagramme lassen sich auch automatisiert rendern und testen – z. B. in **Build-Skripten**, **Makefiles** oder **CI/CD-Pipelines**. Das ist nützlich, wenn du aus `.mmd`-Quelldateien automatisch **SVGs** oder **PNGs** generieren willst.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### ➖ Mermaid CLI (`@mermaid-js/mermaid-cli`)
|
||||||
|
|
||||||
|
Das offizielle Node.js-Tool heißt `mmdc` und kann über `npm` installiert werden:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npm install -g @mermaid-js/mermaid-cli
|
||||||
|
```
|
||||||
|
|
||||||
|
Danach kannst du eine `.mmd`-Quelldatei rendern:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
mmdc -i diagram.mmd -o diagram.svg
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### ➖ Beispiel: Einfache .mmd-Datei
|
||||||
|
|
||||||
|
**`diagram.mmd`**:
|
||||||
|
|
||||||
|
```plaintext
|
||||||
|
flowchart TD
|
||||||
|
A[Start] --> B[Ende]
|
||||||
|
```
|
||||||
|
|
||||||
|
**Exportbefehl:**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
mmdc -i diagram.mmd -o diagram.svg
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### ➖ Typische Optionen
|
||||||
|
|
||||||
|
| Option | Bedeutung |
|
||||||
|
|----------------|------------------------------------------|
|
||||||
|
| `-i` | Eingabedatei (.mmd) |
|
||||||
|
| `-o` | Ausgabedatei (SVG, PNG, PDF möglich) |
|
||||||
|
| `-t default` | Theme: `default`, `dark`, `neutral`, `forest` |
|
||||||
|
| `--width` | Breite des Diagramms |
|
||||||
|
| `--scale` | Skalierung (z. B. für PDF-Ausgabe) |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### ➖ Automatisierung mit Makefile
|
||||||
|
|
||||||
|
```makefile
|
||||||
|
diagram.svg: diagram.mmd
|
||||||
|
mmdc -i diagram.mmd -o diagram.svg -t dark
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### ➖ CI-Beispiel (GitHub Actions)
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
name: Mermaid Build
|
||||||
|
|
||||||
|
on: [push]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- run: npm install -g @mermaid-js/mermaid-cli
|
||||||
|
- run: mmdc -i diagram.mmd -o diagram.svg
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 📌 Hinweis
|
||||||
|
|
||||||
|
- Mermaid CLI nutzt **Puppeteer (Headless Chromium)**, daher ggf. zusätzliche Abhängigkeiten im CI-System notwendig
|
||||||
|
- Mermaid CLI rendert **keine eingebetteten Diagramme** in Markdown – nur `.mmd`-Dateien!
|
||||||
|
|
||||||
|
**Empfohlene Struktur im Projekt:**
|
||||||
|
|
||||||
|
```plaintext
|
||||||
|
docs/
|
||||||
|
diagrams/
|
||||||
|
main.mmd
|
||||||
|
main.svg
|
||||||
|
Makefile
|
||||||
|
README.md
|
||||||
|
```
|
||||||
|
|
||||||
|
[⚓ Inhalt](#-inhalt)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ➖ Diagramm-Export / Automatisierung
|
||||||
|
|
||||||
|
Mermaid-Diagramme lassen sich automatisch aus Quelltext-Dateien exportieren – ideal für Skripte, Build-Systeme oder CI/CD-Pipelines.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### ➖ Export mit Mermaid CLI
|
||||||
|
|
||||||
|
Die **offizielle Mermaid CLI** (`@mermaid-js/mermaid-cli`) erlaubt den Export von `.mmd`-Quelldateien in verschiedene Formate:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
mmdc -i diagram.mmd -o diagram.svg
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### ➖ Installation
|
||||||
|
|
||||||
|
Installieren über npm:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npm install -g @mermaid-js/mermaid-cli
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 🛠 Typische Optionen
|
||||||
|
|
||||||
|
| Option | Bedeutung |
|
||||||
|
|--------------------|--------------------------------------------|
|
||||||
|
| `-i` | Eingabedatei (`.mmd`) |
|
||||||
|
| `-o` | Ausgabedatei (`.svg`, `.png`, `.pdf`) |
|
||||||
|
| `-t dark` | Theme (`default`, `dark`, `forest`, `neutral`) |
|
||||||
|
| `--scale` | Skalierung der Ausgabe (z. B. `--scale 2`) |
|
||||||
|
| `--width`, `--height` | Feste Größenangabe |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### ➖ Beispiel: SVG aus `.mmd` erzeugen
|
||||||
|
|
||||||
|
**Datei `ablauf.mmd`:**
|
||||||
|
|
||||||
|
```plaintext
|
||||||
|
flowchart TD
|
||||||
|
Start --> Verarbeitung --> Ende
|
||||||
|
```
|
||||||
|
|
||||||
|
**Exportbefehl:**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
mmdc -i ablauf.mmd -o ablauf.svg -t default
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### ➖ Struktur im Projekt
|
||||||
|
|
||||||
|
Empfohlene Projektstruktur:
|
||||||
|
|
||||||
|
```plaintext
|
||||||
|
docs/
|
||||||
|
diagrams/
|
||||||
|
diagram.mmd
|
||||||
|
diagram.svg
|
||||||
|
Makefile
|
||||||
|
README.md
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### ➖ Makefile-Beispiel
|
||||||
|
|
||||||
|
```makefile
|
||||||
|
diagram.svg: diagram.mmd
|
||||||
|
mmdc -i diagram.mmd -o diagram.svg -t dark
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### ➖ GitHub Actions-Beispiel
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
name: Mermaid-Diagramm-Export
|
||||||
|
|
||||||
|
on: [push]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- run: npm install -g @mermaid-js/mermaid-cli
|
||||||
|
- run: mmdc -i diagram.mmd -o diagram.svg -t forest
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### ➖ Hinweise
|
||||||
|
|
||||||
|
- Mermaid CLI basiert auf Puppeteer (Headless Chrome) → CI-Systeme benötigen ggf. zusätzliche Abhängigkeiten
|
||||||
|
- Nur `.mmd`-Dateien werden unterstützt – kein Inline-Markdown
|
||||||
|
- Ideal für automatisierten SVG-Export für Dokumentation oder statische Webseiten
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ➖ Template & Projektintegration
|
||||||
|
|
||||||
|
**Ein Mini-Template als Startpunkt für neue Projekte:**
|
||||||
|
|
||||||
|
## ➖ Ablauf
|
||||||
|
|
||||||
|
**Code:**
|
||||||
|
|
||||||
|
```plaintext (mermaid)
|
||||||
|
flowchart TD
|
||||||
|
Init((Start))
|
||||||
|
Task1[Prozess 1]
|
||||||
|
Task2[Prozess 2]
|
||||||
|
Done((Fertig))
|
||||||
|
Init --> Task1 --> Task2 --> Done
|
||||||
|
```
|
||||||
|
|
||||||
|
**Ausgabe:**
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
flowchart TD
|
||||||
|
Init((Start))
|
||||||
|
Task1[Prozess 1]
|
||||||
|
Task2[Prozess 2]
|
||||||
|
Done((Fertig))
|
||||||
|
Init --> Task1 --> Task2 --> Done
|
||||||
|
```
|
||||||
|
|
||||||
|
[⚓ Inhalt](#-inhalt)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🛠 Tools
|
||||||
|
|
||||||
|
| Tool | Vorschau | Markdown-kompatibel | Bemerkung |
|
||||||
|
| ------------------------------------ | -------- | ------------------- | -------------------------------- |
|
||||||
|
| [mermaid.live](https://mermaid.live) | ✔ | ✔ | Online-Editor |
|
||||||
|
| VS Code + Plugin | ✔ | ✔ | Markdown Preview Mermaid Support |
|
||||||
|
| GitHub README | ✔ | ✔ | nur in Repos |
|
||||||
|
| mkdocs-material | ✔ | ✔ | für Doku-Webseiten |
|
||||||
|
|
||||||
|
### Links
|
||||||
|
|
||||||
|
- Mermaid auf GitHub <https://github.com/mermaid-js/>
|
||||||
|
|
||||||
|
[⚓ Inhalt](#-inhalt)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ✏️ Notizen bei Erstellung dieses Dokuments
|
||||||
|
|
||||||
|
> `extensions.json` erstellt mit `code --list-extensions > extensions.txt`
|
||||||
|
|
||||||
|
Hier ist ein **deutschsprachiges Mermaid Cheat Sheet** mit den wichtigsten Diagrammtypen, Syntaxelementen und Beispielen – vollständig in Markdown, damit du es direkt in deine Projekte einbinden kannst.
|
||||||
|
|
||||||
|
[⚓ Inhalt](#-inhalt)
|
||||||
|
|
||||||
|
---
|
65
template.md
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
## ➖ Projektvorlage
|
||||||
|
|
||||||
|
Ein wiederverwendbares Grundgerüst für Mermaid-Diagramme in Projekten – ideal für schnelle Abläufe, Prozessbeschreibungen oder Dokumentationsmodule.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 🧩 Beispiel für ein einfaches Ablaufdiagramm
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
flowchart TD
|
||||||
|
Init((Start))
|
||||||
|
Schritt1[⏳ Prozessschritt 1]
|
||||||
|
Schritt2[⚙ Verarbeitung]
|
||||||
|
Ergebnis{Erfolg?}
|
||||||
|
Positiv[✔ Erfolgreich]
|
||||||
|
Negativ[✖ Fehler]
|
||||||
|
Fertig((Fertig))
|
||||||
|
|
||||||
|
Init --> Schritt1 --> Schritt2 --> Ergebnis
|
||||||
|
Ergebnis -- Ja --> Positiv --> Fertig
|
||||||
|
Ergebnis -- Nein --> Negativ --> Fertig
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 📁 Ordnerstruktur-Vorschlag
|
||||||
|
|
||||||
|
```
|
||||||
|
docs/
|
||||||
|
diagrams/
|
||||||
|
main.mmd # Mermaid-Quelldatei
|
||||||
|
main.svg # Exportiertes Diagramm
|
||||||
|
README.md # Referenz auf das Diagramm
|
||||||
|
Makefile # Automatisierter Export
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 🛠 Makefile-Snippet für automatische Generierung
|
||||||
|
|
||||||
|
```makefile
|
||||||
|
diagrams/main.svg: diagrams/main.mmd
|
||||||
|
mmdc -i diagrams/main.mmd -o diagrams/main.svg -t neutral
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 🔗 Verlinkung im README.md
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
## 🔍 Prozessübersicht
|
||||||
|
|
||||||
|

|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 📌 Empfehlung
|
||||||
|
|
||||||
|
- Diagramme als `.mmd` separat pflegen – kein Inline-Markdown
|
||||||
|
- Automatisch als `.svg` oder `.png` exportieren
|
||||||
|
- Diagramme per Git versionieren
|
||||||
|
- In CI/CD-Pipeline oder Build-System integrieren
|
||||||
|
|
||||||
|
---
|