Für fortgeschrittene Workflows können Sie die docmd-Build-Engine direkt in Ihre eigenen Node.js-Anwendungen importieren und verwenden. Dies ist ideal für benutzerdefinierte CI/CD-Pipelines, automatisierte Dokumentationsgenerierung oder die Erweiterung von docmd für spezielle Umgebungen.
Installation
Stellen Sie sicher, dass @docmd/core in Ihrem Projekt installiert ist:
npm install @docmd/core
Kernfunktionen
buildSite(configPath, options)
Die primäre Build-Funktion. Sie übernimmt das Laden der Konfiguration, das Parsen von Markdown und die Generierung von Assets.
import { buildSite } from '@docmd/core';
async function runBuild() {
await buildSite('./docmd.config.js', {
isDev: false, // Auf true setzen für Watch-Mode-Logik
offline: false, // Auf true setzen für Optimierung auf file://-Zugriff
zeroConfig: false // Auf true setzen, um die Suche nach Konfigurationsdateien zu überspringen
});
}
buildLive(options)
Generiert das Bundle für den browserbasierten Live-Editor.
import { buildLive } from '@docmd/core';
async function generateEditor() {
await buildLive({
serve: false, // true startet einen lokalen Server; false generiert statische Dateien
port: 3000 // Benutzerdefinierter Port, falls serve true ist
});
}
Beispiel: Benutzerdefinierte Pipeline
Sie können docmd nutzen, um komplexe Dokumentations-Workflows zu erstellen.
import { buildSite } from '@docmd/core';
import fs from 'fs-extra';
async function deploy() {
// 1. Dynamische Inhalte generieren
await fs.writeFile('./docs/dynamic.md', '# Generierter Inhalt');
// 2. docmd build ausführen
await buildSite('./docmd.config.js');
// 3. Ausgabe verschieben
await fs.move('./site', './public/docs');
}
Die programmatische API ist hervorragend mit KI-gesteuerter Dokumentation kompatibel. Agenten können Builds nach Inhaltsaktualisierungen auslösen, um die Integrität zu prüfen und Bereitstellungen autonom zu verwalten.
Plugin-API (@docmd/api)
Das Paket @docmd/api ist das dedizierte Zuhause für das Plugin-System. Es bietet Hook-Registrierung, WebSocket-RPC-Dispatching und Werkzeuge zur Bearbeitung von Quelldateien.
npm install @docmd/api
Abwärtskompatibilität: Alle Exporte aus
@docmd/apiwerden auch von@docmd/corere-exportiert, sodass bestehender Code ohne Änderungen weiter funktioniert. Neue Projekte sollten jedoch direkt aus@docmd/apiimportieren.
createActionDispatcher(hooks, options)
Erstellt einen Dispatcher, der WebSocket-RPC-Nachrichten an Plugin-Action/Event-Handler weiterleitet.
import { createActionDispatcher } from '@docmd/api';
const dispatcher = createActionDispatcher(
{ actions: myPlugin.actions, events: myPlugin.events },
{ projectRoot: '/pfad/zum/projekt', config, broadcast }
);
const { result, reload } = await dispatcher.handleCall('my-action', payload);
createSourceTools({ projectRoot })
Erstellt Werkzeuge zur Bearbeitung von Quellcodedateien (Markdown).
import { createSourceTools } from '@docmd/api';
const source = createSourceTools({ projectRoot: '/pfad/zum/projekt' });
// Block-Informationen in einem bestimmten Zeilenbereich abrufen
const block = await source.getBlockAt('docs/page.md', [10, 12]);
// Text mit Syntax-Markern umschließen
await source.wrapText('docs/page.md', [10, 12], 'important', 0, '**', '**');
loadPlugins(config, options)
Lädt, validiert und registriert alle in der Konfiguration deklarierten Plugins. Gibt das gefüllte Hook-Register zurück.
import { loadPlugins, hooks } from '@docmd/api';
const registeredHooks = await loadPlugins(config, {
resolvePaths: [__dirname] // Hilft beim Auflösen von Plugins in pnpm-Workspaces
});
Typen-Exporte
Für Entwickler von TypeScript-Plugins stehen die folgenden Typen zur Verfügung: PluginModule, PluginDescriptor, PluginHooks, Capability, ActionContext, ActionHandler, EventHandler, SourceTools, BlockInfo, TextLocation.