Das docmd 0.7.8 Release führt das Git-Plugin für Repository-basierte Metadaten ein, eine komplett neu gestaltete Terminal-Oberfläche mit Live-Fortschritts-Feedback, parallele Seitenverarbeitung für dramatisch schnellere Builds, automatische Plugin-Installation für offizielle Plugins und Container-Syntax-Kompatibilität für Benutzer, die von anderen Dokumentations-Engines migrieren.
Highlights
Build-Engine — Parallele Verarbeitung
Die Seiten-Rendering-Pipeline wurde von sequentiell zu gebündelter paralleler Verarbeitung umgestaltet und liefert signifikante Beschleunigung für Dokumentationsseiten aller Größen.
Was sich geändert hat:
- Gebündelte Datei-I/O: Dateien werden jetzt 64 gleichzeitig gelesen und 128 gleichzeitig geschrieben via
Promise.all, statt einzeln sequentiell - Pipeline-Überlappung: Dateilesen, Markdown-Parsing und HTML-Schreiben überlappen sich jetzt über Batches hinweg
- Parallele Schreibvorgänge: Alle gerenderten HTML-Dateien werden gleichzeitig in Batches auf die Festplatte geschrieben
Voraussichtliche Leistung (einfache Seiten):
| Skalierung | Vorher (0.7.7) | Nachher (0.7.8) | Verbesserung |
|---|---|---|---|
| ~1.000 Seiten | ~22s | ~12s | ~45% schneller |
| ~10.000 Seiten | ~4 Min+ | ~1,5 Min | ~60% schneller |
| Datei-Lesephase | Sequentiell | 64-Datei-Batches | 64x Parallelität |
| Datei-Schreibphase | Sequentiell | 128-Datei-Batches | 128x Parallelität |
| Fortschritts-Feedback | Keines (stumm) | Live-Fortschrittsbalken | Echtzeit |
Die Leistungsverbesserung skaliert mit der Dokumentationsgröße. Größere Seiten (1.000+ Seiten) mit umfangreicher I/O profitieren am meisten von der gebündelten parallelen Verarbeitung.
Terminal-Oberfläche — Einheitliches TUI
Alle Terminal-Ausgaben wurden in ein einheitliches, signalstarkes Designsystem umgestaltet, das über alle Befehle hinweg geteilt wird. Keine stummen Wartezeiten, inkonsistente Formatierung oder unübersichtliche mehrzeilige Ausgaben mehr.
Neue TUI-Primitiven:
| Feature | Beschreibung |
|---|---|
| Fortschrittsbalken | ━━━━━━━━━━━━───────── 42/100 (42%) — einzeilig, aktualisiert sich in-place |
| Spinner | ⠋ ⠙ ⠹ — Braille-Punkt-Animation während langer Operationen |
| Timer | Jeder Build, Rebuild und jedes Projekt zeigt die vergangene Zeit |
| Sektionen | Konsistente ┌─ Sektion / └── Rahmung über alle Befehle |
Einheitliche Ausgabe über alle Befehle:
┌─ Build
│ Source docs/
│ Output site/
│ Versions 2 (v06, v07)
│ Locales 4 (en, hi, zh, fr)
│ Processing pages ━━━━━━━━━━━━━━━━━━━━ 419/419 (100%)
└──────────────────────────────────────────────────────────
┌─ Post-Build Tasks
│ Search index [ DONE ]
│ Sitemap [ DONE ]
└──────────────────────────────────────────────────────────
⬢ Build complete. Generated 238 pages in 1.4s.
Vereinheitlichte Befehle:
docmd build— Sektions-Header mit Quelle/Ausgabe/Versionen/Sprachen, Fortschrittsbalken, Zeitanzeigedocmd dev— Animierter Spinner während des initialen Builds und bei Rebuilds, Zeit pro Rebuild- Multi-Projekt-Builds — Spinner-Animation pro Projekt, Zeit pro Projekt, Gesamtübersicht
docmd live— Konsistente Sektions-Rahmung wie bei allen anderen Befehlen
Git-Plugin (Core)
Das neue Git-Plugin bringt Repository-basierte Metadaten auf Ihre Dokumentationsseiten — Zeitstempel der letzten Aktualisierung, Commit-Verlauf-Tooltips und Bearbeitungslinks — alles direkt aus Ihrem Git-Verlauf ohne Konfiguration.
// Optional: Bearbeitungslinks konfigurieren
plugins: {
git: {
repo: 'https://github.com/ihre-org/docs',
branch: 'main'
}
}
Funktionen:
- Zeitstempel der letzten Aktualisierung: Zeigt an, wann jede Seite zuletzt geändert wurde, mit relativer Formatierung für aktuelle Änderungen
- Commit-Verlauf-Tooltip: Hover zeigt aktuelle Commits mit Autorennamen und Nachrichten
- Bearbeitungslinks: Erstellt automatisch “Diese Seite bearbeiten”-Links für GitHub, GitLab und Bitbucket
- Graceful Degradation: Deaktiviert sich automatisch, wenn das Projekt nicht in einem Git-Repository ist
Das Plugin ersetzt die veraltete editLink-Konfigurationsoption durch eine funktionsreichere Alternative. Siehe die Git-Plugin-Dokumentation für vollständige Details.
Automatische Installation für offizielle Plugins
Offizielle Plugins, die in Ihrer docmd.config.js aufgeführt sind, werden jetzt automatisch installiert, wenn sie fehlen. Wenn Sie ein Plugin zu Ihrer Konfiguration hinzufügen, das nicht installiert ist, lädt docmd es beim nächsten Build von npm herunter.
// docmd.config.js
plugins: {
pwa: {}, // Nicht installiert? docmd installiert es automatisch
threads: {} // Dasselbe hier
}
Sicherheitsfunktionen:
- Funktioniert nur für offizielle
@docmd/plugin-*-Pakete in der Registry - Installiert die exakte Version, die zu Ihrer
@docmd/core-Version passt - Verwendet den Paketmanager Ihres Projekts (npm, pnpm, yarn oder bun)
- Zeigt Fortschritt im Terminal an
Container-Syntax-Kompatibilität
Benutzer, die von VitePress, Docusaurus oder ähnlichen Dokumentations-Engines migrieren, können jetzt vertraute Container-Syntax ohne Änderungen verwenden.
VitePress-Style-Container funktionieren jetzt:
:::tip
Dies wird als Tipp-Callout gerendert.
:::
:::warning
Dies wird als Warnung-Callout gerendert.
:::
:::details Klicken zum Erweitern
Dies wird als zusammenklappbarer Abschnitt gerendert.
:::
Docusaurus-Style-Container funktionieren jetzt:
:::note
Dies wird als Info-Callout gerendert.
:::
:::caution
Dies wird als Warnung-Callout gerendert.
:::
Zusätzlich wird Syntax ohne Leerzeichen jetzt für alle Container unterstützt:
:::callout info
Funktioniert genauso wie ::: callout info
:::
:::tabs
Funktioniert genauso wie ::: tabs
:::
Dies ermöglicht die Migration von Dokumentation aus anderen Engines mit minimalen Änderungen.
Migrationsfreundliche Aliase
| Alias | Entspricht | Herkunft |
|---|---|---|
:::tip |
callout tip |
VitePress |
:::warning |
callout warning |
VitePress |
:::danger |
callout danger |
VitePress |
:::info |
callout info |
VitePress |
:::details |
collapsible |
VitePress |
:::note |
callout info |
Docusaurus |
:::caution |
callout warning |
Docusaurus |
Diese Aliase funktionieren stillschweigend neben der Standard-docmd-Syntax. Ihre bestehende Dokumentation funktioniert weiterhin unverändert, während importierte Inhalte aus anderen Engines korrekt gerendert werden.
Interne Verbesserungen
Britisches Englisch Standardisierung
Die Dokumentation wurde aktualisiert, um durchgehend britische englische Schreibweisen zu verwenden. Dies umfasst Terminologie wie “optimised”, “centralised”, “localisation” und “colour”, wo angemessen.
Code-Qualität
- Em-Striche durch Standard-Bindestriche in Dokumentation und Code-Kommentaren ersetzt für verbesserte Lesbarkeit
- Standardisierte Kommentarformatierung in Quelldateien
- Verbesserte TypeScript-Typdefinitionen für Plugin-APIs
Vollständiges Changelog
Funktionen
- Git-Plugin (Core): Neues Core-Plugin für Zeitstempel der letzten Aktualisierung, Commit-Verlauf und Bearbeitungslinks mit Graceful Degradation
- Auto-Install: Offizielle Plugins in der Konfiguration werden automatisch installiert, wenn sie fehlen
- Container-Aliase: VitePress- und Docusaurus-Container-Syntax funktioniert jetzt sofort
- Container ohne Leerzeichen: Alle Container akzeptieren jetzt Syntax mit oder ohne Leerzeichen nach
::: - Parallele Verarbeitung: Gebündelte Datei-I/O mit 64-Datei-Lese- und 128-Datei-Schreib-Parallelität
- Einheitliches TUI: Fortschrittsbalken, Spinner, Timer und konsistente Sektions-Ausgabe über alle Befehle
Verbesserungen
- Build-Leistung: Bis zu ~60% schnellere Builds bei großen Seiten durch paralleles I/O-Batching
- Live-Fortschritt: Echtzeit-Fortschrittsbalken während der Seitenverarbeitung
- Animierte Spinner: Visuelles Feedback während Builds, Rebuilds und Multi-Projekt-Verarbeitung
- Build-Zeitanzeige: Jede Operation meldet die vergangene Zeit
- Git-Widget UI: Tooltip verwendet CSS
:hover/:focus-withinfür flüssige, ruckelfreie Anzeige - Code-Block-Styling:
docmd-code-block-wrapperverwendet jetzt die universelle--shadow-sm-Variable - Live-Editor TUI: Einheitliche Sektions-Rahmung und Graceful Shutdown
- Dokumentation: Britisches Englisch Schreibweisen-Standardisierung
- Code-Stil: Konsistente Formatierung in der gesamten Codebasis
- Plugin-Registry: Git-Plugin zur offiziellen Registry hinzugefügt
Veraltungen
- editLink-Konfiguration: Die eigenständige
editLink-Konfigurationsoption ist zugunsten des Git-Plugins veraltet
Migrationsanleitung
Übernahme des Git-Plugins
Wenn Sie die editLink-Konfiguration verwendet haben, ersetzen Sie diese durch das git-Plugin. Der neue Ansatz ist intelligenter — er erkennt automatisch Ihr git-Repository-Stammverzeichnis und berechnet den korrekten Dateipfad, sodass Sie kein Verzeichnis mehr in der URL hartcodieren müssen.
Vorher (veraltet):
export default defineConfig({
editLink: {
enabled: true,
baseUrl: 'https://github.com/org/repo/edit/main/docs' // ← hartcodiertes Verzeichnis
}
});
Nachher:
export default defineConfig({
plugins: {
git: {
repo: 'https://github.com/org/repo', // ← nur das Repository, kein Pfad nötig
branch: 'main'
}
}
});
Das Plugin löst den korrekten Dateipfad relativ zum git-Stammverzeichnis automatisch auf. Das bedeutet, dass Bearbeitungslinks in Monorepos und Multi-Projekt-Setups ohne manuelle Pfadkonfiguration korrekt funktionieren.
Weitere Optionen:
| Option | Standard | Beschreibung |
|---|---|---|
repo |
— | Repository-URL (beliebiger Anbieter) |
branch |
'main' |
Zu verlinkender Branch |
editPath |
'edit' |
URL-Segment für die Bearbeitungsseite. '-/edit' für GitLab, 'src' für Bitbucket |
editLink |
true |
Auf false setzen, um den Bearbeitungslink zu deaktivieren |
editLinkText |
i18n-String | Benutzerdefinierte Beschriftung für den Bearbeitungslink |
Wenn Sie editLink.baseUrl mit einem hartcodierten Unterverzeichnis verwendet haben (z.B. .../edit/main/docs), wird dieses Verzeichnissegment jetzt automatisch berechnet. Beim Wechsel zum git-Plugin muss das Unterverzeichnis aus der URL entfernt werden — verwenden Sie als repo-Wert nur https://github.com/org/repo.
Für Benutzer, die von anderen Engines migrieren
Wenn Sie Dokumentation von VitePress, Docusaurus oder ähnlichen Engines importieren:
- Ihre bestehenden
:::tip,:::warning,:::note-Container werden korrekt gerendert - Syntax ohne Leerzeichen wie
:::tabsfunktioniert neben dem Standard::: tabs - Keine Änderungen an Ihren Markdown-Dateien sind erforderlich
Wir empfehlen, schrittweise zur Standard-docmd-Syntax (::: callout tip) für neue Inhalte überzugehen, da sie mehr Flexibilität mit Titeln und Icons bietet.