docmd verfügt über eine modulare Plugin-Architektur. Integrierte Plugins werden direkt mit der Kerne-Engine ausgeliefert und erfordern keine separate Installation. Optionale Plugins und Plugins von Drittanbietern können über die CLI oder Paketmanager installiert werden.

Plugins installieren

Verwenden Sie die docmd-CLI, um Plugin-Pakete zu verwalten:

# Ein offizielles Plugin installieren
npx @docmd/core add <plugin-name>

# Ein installiertes Plugin entfernen
npx @docmd/core remove <plugin-name>

Der Installer erkennt Ihren aktiven Paketmanager (npm, pnpm, yarn oder bun), löst Kurznamen in vollständige @docmd/plugin-*-Paketnamen auf und aktualisiert Ihre docmd.config.json automatisch.

Verwenden Sie --verbose (oder -V), um vollständige Protokolle des Installers anzuzeigen:

npx @docmd/core add <plugin-name> -V

Integrierte Kern-Plugins

Diese Plugins werden gebündelt mit @docmd/core ausgeliefert und erfordern keine Installation. Aktivieren oder konfigurieren Sie sie in docmd.config.json:

docmd.config.json
{
  "plugins": {
    "search": {},
    "ai": {},
    "seo": { "aiBots": false },
    "sitemap": {},
    "analytics": {},
    "llms": {},
    "okf": {},
    "mermaid": {},
    "openapi": {},
    "git": {}
  }
}
Git-Repository-Erkennung

Das Git-Plugin erkennt, ob Ihr Projektstammverzeichnis ein gültiges Git-Repository ist. Wenn die Git-Historie nicht verfügbar ist, deaktiviert es die Generierung von Fußzeilen-Zeitstempeln automatisch.

OKF-Bundle-Unterstützung

Das @docmd/plugin-okf-Plugin generiert ein Open Knowledge Format Bundle (site/okf/), das typisierte Manifeste und Konzeptdateien für KI-Agenten enthält. Es ist standardmäßig aktiviert; setzen Sie "plugins": { "okf": false }, um es zu deaktivieren. Siehe OKF-Bundle-Plugin für Details.

Optionale Plugins

Optionale Plugins erfordern vor der Aktivierung eine explizite Installation:

Plugin Installationsbefehl Zweck
PWA-Unterstützung npx @docmd/core add pwa Progressive Web App Manifest und Offline-Service-Worker-Caching
Threads npx @docmd/core add threads Markdown-native Inline-Kommentardiskussionen
Math (KaTeX) npx @docmd/core add math Serverseitiges LaTeX- und KaTeX-Mathematikgleichungsrendering

Automatische Installationsmechanismen

Wenn ein offizielles Plugin in docmd.config.json deklariert ist, ohne in node_modules installiert zu sein, lädt docmd es bei der nächsten Build-Ausführung automatisch herunter und installiert es:

docmd.config.json
{
  "plugins": {
    "pwa": {}
  }
}

Der Auto-Installer:

  • Beschränkt Ziele strikt auf offizielle @docmd/plugin-*-Pakete.
  • Gleicht Abhängigkeits-Versions-Tags mit der installierten @docmd/core-Version ab.
  • Erkennt automatisch Projekt-Paketmanager (npm, pnpm, yarn, bun).
  • Gibt den Installationsfortschritt direkt in der Terminal-Oberfläche aus.
Belastbare Modulauflösung

Der Auto-Installer verwendet dynamische ES-Modul-Importe mit Fallback-Auflösungspfaden, die das nahtlose Laden von ESM-Paketen ermöglichen, die explizite exports-Zuordnungen deklarieren.

Drittanbieter- & Benutzerdefinierte Plugins

Aus Sicherheitsgründen erzwingt der automatisierte Installer eine offizielle Registrierungs-Zulassungsliste. Installieren Sie Drittanbieter-Plugins direkt mit Ihrem Paketmanager:

npm install my-custom-plugin
# oder pnpm add / yarn add / bun add

Fügen Sie das benutzerdefinierte Plugin unter Verwendung seiner vollständigen Paketkennung zu docmd.config.json hinzu:

docmd.config.json
{
  "plugins": {
    "my-custom-plugin": {
      "someOption": true
    }
  }
}

Seitenebene & noStyle-Plugin-Geltungsbereiche

Plugins injizieren standardmäßig global Stile und Verhalten. Sie können Plugins auf ungestalteten Landing-Pages (noStyle: true) oder pro Seite über Frontmatter deaktivieren.

Globaler Konfigurationsbereich

Konfigurieren Sie Plugins in docmd.config.json so, dass sie noStyle-Landingpages überspringen:

docmd.config.json
{
  "plugins": {
    "math": {
      "noStyle": false
    }
  }
}

Bereich für Seiten-Frontmatter

Aktivieren oder deaktivieren Sie bestimmte Plugins pro Dokument selektiv mithilfe von Seiten-Frontmatter:

---
noStyle: true
plugins:
  math: true
  threads: false
---

Plugin-Architektur-Lebenszyklus

Plugins klinken sich in Kern-Build- und Entwicklungszyklen ein:

Lebenszyklus-Hook Technische Funktion
markdownSetup(md, opts) Registrieren benutzerdefinierter Markdown-it Parser-Regeln
generateMetaTags(config, page, root) Injizieren von <meta>- und <link>-Elementen in den <head>
generateScripts(config, opts) Injizieren von Client-Skripten in den <head> oder </body>
getAssets(opts) Registrieren statischer Assets oder externer CDN-Bundles
onPostBuild(ctx) Ausführen von Nachbearbeitungsaufgaben nach Abschluss der HTML-Ausgabe
translations(localeId) Registrieren lokalisierter UI-String-Zuordnungen
actions Registrieren serverseitiger RPC-Handler für WebSocket-Aufrufe des Dev-Servers
events Registrieren von Client-Event-Listenern

Sicherheits- & Schutzgarantien

  • Deskriptor-Validierung: Fehlerhafte Plugin-Deskriptoren werden beim Start abgelehnt.
  • Fehlerisolation: Jeder Hook-Aufruf ist durch try/catch-Wrapper geschützt; ein Plugin-Fehler kann den Dokumentations-Build nicht zum Absturz bringen.
  • Durchsetzung von Fähigkeiten: Plugins erhalten Ausführungsrechte ausschließlich für Hooks, die in ihren Manifest-Fähigkeiten explizit deklariert sind.

Siehe Plugins erstellen für vollständige Entwicklungsrichtlinien für Plugins.