Das docmd 0.7.9-Release führt inkrementelle Builds für eine nahezu verzögerungsfreie Entwicklung, das OpenAPI-Plugin und massive Performance-Optimierungen über eine parallele Plugin-Architektur ein. Es behebt zudem kritische Speicherlecks bei Konfigurationsdateien, verbessert die Genauigkeit des Git-Verlaufs in Monorepos, fügt Mitwirkenden-Avatare hinzu und implementiert einen smarten Sticky-Footer.
✨ Highlights
OpenAPI-Plugin
Das neue OpenAPI-Plugin rendert API-Referenzdokumentation direkt aus OpenAPI 3.x Spezifikationsdateien in Markdown-Seiten — zur Build-Zeit, ohne clientseitiges JavaScript und ohne Drittanbieter-UI-Bibliotheken (kein Swagger UI, kein Redoc).
Fügen Sie eine Spezifikationseinbettung in jedes Markdown ein:
```openapi
./api/openapi.json
```
Das Plugin liest die Spezifikation zur Build-Zeit und gibt statisches HTML aus: farbkodierte Methoden-Badges, Parameter-Tabellen, Request/Response-Schema-Tabellen und Status-Code-Beschreibungen. Unterstützt JSON- und YAML-Spezifikationen, löst interne $ref-Referenzen auf und verarbeitet oneOf/anyOf-Union-Typen.
Neu in 0.7.9: Option download: true hinzugefügt, um direkte Links zur rohen Spezifikationsdatei bereitzustellen — ideal für KI-Modelle (wie GPT-4 oder Claude), um Ihre API-Dokumentation programmatisch zu nutzen.
docmd add openapi
Weitere Details finden Sie in der OpenAPI-Plugin-Dokumentation.
Inkrementelle Builds (Instant Dev-Modus)
Der Entwicklungs-Server bietet nun ein System für gezielte Rebuilds. Zuvor löste jede Änderung an einer Markdown-Datei einen vollständigen Build der Website aus. Bei Websites mit hunderten Seiten konnte dies 10+ Sekunden dauern.
In 0.7.9 rendert docmd dev nur noch die spezifische Datei neu, die Sie geändert haben. Seiten-Reloads sind nun sofort (<1s) verfügbar, selbst bei riesigen Projekten. Das System erhält dabei alle Navigations-, Versions- und Asset-Kontexte korrekt aufrecht.
Parallele Plugin-Architektur (Multi-Threaded Performance)
Die Build-Engine wurde grundlegend überarbeitet, um die parallele Ausführung von Plugins zu unterstützen. Zuvor liefen Plugin-Hooks wie onBeforeRender sequenziell für jede Seite ab. Für Plugins, die I/O-Operationen durchführen oder Kindprozesse starten (wie das Git-Plugin), war dies ein erheblicher Flaschenhals.
In 0.7.9 verarbeitet die Engine das Seiten-Rendering nun in parallelen Batches. In Kombination mit dem neuen asynchronen Git-Plugin, das nicht-blockierende execFile-Aufrufe verwendet, sind die Build-Zeiten für große Websites mit hunderten von Seiten bis zu 3x schneller.
Wichtige Verbesserungen:
- Batched Rendering: Phase 3 des Generators läuft jetzt in parallelen Batches von 64 Seiten.
- Asynchrone Hooks: Alle Plugin-Hooks können jetzt
asyncsein, und die Engine wartet parallel auf deren Abschluss. - Git-Plugin Überarbeitung: Synchrones
execSyncwurde durch asynchrones, nicht-blockierendes Prozess-Spawning ersetzt.
📝 Vollständiges Änderungsprotokoll
Fehlerbehebungen
Git-Plugin — Datei-spezifischer Commit-Verlauf in Multi-Projekt-Builds: Der Singleton-Zustand auf Modulebene wurde zu einem Pro-Verzeichnis-Cache behoben, sodass jede Datei immer in ihrem eigenen Repository-Kontext abgefragt wird. Korrekt in Einzel-Projekt-, Multi-Projekt-, versionierten und mehrsprachigen Konfigurationen.
Git-Plugin — SPA-Hydration: Behoben, um auf das
docmd:page-mounted-Ereignis zu hören, sodass Zeitstempel nach SPA-Navigation korrekt formatiert werden.
Neue Funktionen
OpenAPI-Plugin (
@docmd/plugin-openapi): Build-Zeit OpenAPI 3.x Spezifikations-Renderer, ohne clientseitige Abhängigkeiten.Plugin-API —
onBeforeRender-Hook: Wird vor dem Template-Rendering aufgerufen, empfängt den vollständigenPageContextmitsourcePath.Plugin-API —
PageContext-Typ: Formal typisiert und aus@docmd/apiexportiert.Git-Plugin — Mitwirkenden-Avatare: Commit-Verlauf-Tooltip zeigt jetzt Gravatar-Bilder an.
Git-Plugin — Konfigurierbares Datumsformat: Neue
dateFormat-Option:relative(Standard),isooderlocale-aware.plugins: { git: { dateFormat: 'locale-aware' } }
Verbesserungen
Parallele Build-Pipeline: Der Generator parallelisiert nun die Phase des Template-Renderings. Plugins können nun zeitaufwändige Operationen (wie Git-Aufrufe oder OpenAPI-Parsing) gleichzeitig auf mehreren CPU-Kernen über Kindprozesse ausführen.
Asynchrones Git-Plugin: Das Git-Plugin ist nun vollständig asynchron. Es nutzt nicht-blockierende Kindprozesse und Pfad-Normalisierung, um hohe Performance und Genauigkeit auch in komplexen Monorepo-Strukturen zu gewährleisten.
Inkrementelles Build-System: Der Dev-Server führt nun gezielte Teil-Builds durch. Das Bearbeiten einer Datei rendert nur diese Datei neu und reduziert die Reload-Zeiten von 10s+ auf unter 300ms.
OpenAPI-Plugin — Download-Spezifikation: Neue
download-Option bietet einen Link zur rohen JSON/YAML-Spezifikation im Seiten-Header für KI-Zugänglichkeit.UI — Smarter Sticky-Footer: Der Footer ist jetzt immer mit Flex-Layout am unteren Rand des Viewports verankert. (Behoben).
Intern
Bearbeitungslink-Pfadauflösung: Wird vom Git-Repository-Root berechnet, nicht von
config.srcorprocess.cwd().Config-Loader — Härtung: Obligatorische Bereinigung für verwaiste temporäre Konfigurationsdateien (
docmd.config-*.js) implementiert undtry-finally-Sicherheit hinzugefügt, um Lecks bei Syntaxfehlern zu verhindern.