Komponenten und Code
MDX: Markdown mit Komponenten
Abschnitt betitelt „MDX: Markdown mit Komponenten“Eine Datei mit Endung .mdx darf zusätzlich zu Markdown Komponenten enthalten. Das sind wiederverwendbare Bausteine, die Starlight mitbringt oder die du selbst schreibst. Sie werden oben importiert und dann wie HTML-Tags verwendet:
import { Aside, Tabs, TabItem, Steps, FileTree } from '@astrojs/starlight/components';
<Aside type="tip" title="Ein Hinweis">Markdown **funktioniert** auch innerhalb einer Komponente.</Aside>Die Starlight-Komponenten, die auf dieser Plattform am häufigsten vorkommen:
Hinweiskasten mit type note, tip, caution oder danger:
<Aside type="caution" title="Vorsicht">So sieht `caution` aus.</Aside>Du siehst gerade welche. Gut für «macOS / Windows / Linux».
<Tabs><TabItem label="macOS">brew install node</TabItem><TabItem label="Windows">winget install OpenJS.NodeJS.LTS</TabItem></Tabs>Nummerierte Schritte mit Verbindungslinie:
- Erster Schritt
- Zweiter Schritt
<Steps>1. Erster Schritt2. Zweiter Schritt</Steps>Dateibaum aus einer Markdown-Liste, Ordner enden mit /, Text nach dem Namen wird zum Kommentar.
<FileTree>- src/ - content/ - docs/ Alle Seiten</FileTree>Code-Blöcke
Abschnitt betitelt „Code-Blöcke“Starlight rendert Code-Blöcke mit Expressive Code. Nach der Sprache kannst du Attribute angeben:
```bash frame="terminal" title="VM"sudo apt update```
```bash title="backup.sh" ins={3-4} del={5}#!/bin/bashset -euo pipefail# neu:rsync -a "$QUELLE" "$ZIEL"cp -r "$QUELLE" "$ZIEL"```| Attribut | Wirkung |
|---|---|
frame="terminal" |
Rahmen wie ein Terminalfenster |
title="..." |
Dateiname oder Beschriftung über dem Block |
ins={3-4}, del={5} |
Zeilen als eingefügt (grün) oder gelöscht (rot) markieren |
{2} |
Zeile hervorheben |
wrap |
Lange Zeilen umbrechen statt scrollen |
Die Konvention dieser Plattform: Terminal-Sitzungen mit frame="terminal", Skripte und Konfigurationsdateien mit title, Änderungen gegenüber dem vorherigen Listing mit ins.
Diagramme mit Mermaid
Abschnitt betitelt „Diagramme mit Mermaid“Statt Bilder zu zeichnen, beschreibst du Diagramme als Text. Die Integration astro-mermaid rendert sie beim Build:
npm install astro-mermaid mermaidimport starlight from '@astrojs/starlight';import mermaid from 'astro-mermaid';
export default defineConfig({ integrations: [mermaid({ theme: 'neutral', autoTheme: true }), starlight({ /* ... */ })],});Die Mermaid-Integration muss vor Starlight stehen. Dann:
```mermaidflowchart LR A[Markdown] --> B[Build] --> C[Webserver]```flowchart LR
A[Markdown] --> B[Build] --> C[Webserver]
autoTheme: true passt die Farben an Dark und Light Mode an. Mermaid kennt Flowcharts, Sequenzdiagramme, Zustandsdiagramme und mehr, die Mermaid-Dokumentation hat Beispiele.
Hands-on: Benenne 01-hallo.md in 01-hallo.mdx um, importiere Aside und Steps, und füge einen Hinweis, drei Schritte und ein Flowchart ein. Prüfe, dass der Dev-Server keine Fehler zeigt.
Lösung anzeigen
Ein Mermaid-Block gehört nicht in Backticks mit vier Zeichen, das war hier nur nötig, um einen Code-Block innerhalb eines Code-Blocks zu zeigen. In deiner Seite reichen drei Backticks mit mermaid als Sprache.
Selbstcheck · 3 Fragen