Workspaces ermöglichen es Ihnen, mehrere unabhängige Dokumentationsprojekte aus einem einzigen Repository zu bauen und zu deployen. Jedes Unterprojekt behält seine eigenen Konfigurationsoptionen und erbt gleichzeitig globale Standards, die im Workspace-Root definiert sind.
docs.example.com/ → Haupt-Produktdokumentation
docs.example.com/sdk/ → SDK-API-Referenz
docs.example.com/cli/ → CLI-Tooling-Leitfaden
Verzeichnis-Einrichtung
Organisieren Sie Ihr Repository in separate Projekt-Unterverzeichnisse. Geteilte statische Assets und globale Workspace-Konfigurationen befinden sich im Repository-Root:
my-docs/
├── assets/ ← Geteilte statische Assets (von allen Projekten vererbt)
├── main-docs/
│ ├── docmd.config.json ← Projektkonfiguration (überschreibt Root-Standards)
│ └── docs/ ← Hauptprojekt Markdown-Inhalte
├── sdk-docs/
│ ├── docmd.config.json ← SDK-Projektkonfiguration
│ └── docs/ ← SDK-Projekt Markdown-Inhalte
├── docmd.config.json ← Workspace-Root-Konfiguration
└── package.json
Workspace-Konfigurationsschema
Die Datei docmd.config.json im Root verwendet den Schlüssel workspace zur Deklaration von Projekten. Top-Level-Parameter (z. B. theme, menubar, logo) dienen als globale Standards für alle Unterprojekte:
{
"workspace": {
"projects": [
{ "prefix": "/", "src": "main-docs", "title": "Docs" },
{ "prefix": "/sdk", "src": "sdk-docs", "title": "SDK Reference" }
],
"switcher": {
"enabled": true,
"position": "sidebar-top"
}
},
"theme": { "name": "default", "appearance": "system" },
"logo": {
"light": "assets/logo-dark.svg",
"dark": "assets/logo-light.svg"
},
"menubar": [
{ "text": "GitHub", "url": "https://github.com/docmd-io/docmd", "external": true }
]
}
workspace-Optionen
| Eigenschaft | Typ | Beschreibung |
|---|---|---|
projects |
Array |
Liste von Projekteinträgen. Genau ein Projekt muss prefix: "/" zuweisen. |
switcher |
Object |
Steuert Position und Rendering des Projekt-Umschaltmenüs. |
Felder der Projekteinträge
| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
prefix |
String |
Ja | URL-Routenpräfix. Verwenden Sie "/" für das Root-Projekt. |
src |
String |
Ja | Unterverzeichnispfad mit Projektinhalten und optionaler docmd.config.json. |
title |
String |
Nein | Im Projekt-Umschaltmenü angezeigter Name. |
Übersteuerungen auf Projektebene
Unterprojekte können eigene docmd.config.json-Manifeste führen. Auf Projektebene definierte Parameter überschreiben die Standards des Workspace-Roots:
{
"title": "SDK Reference",
"src": "docs",
"plugins": {
"search": {},
"openapi": {}
}
}
Wenn ein Unterprojekt keine lokale Konfigurationsdatei hat, wendet der Compiler automatisches Zero-Config-Routing mit den Workspace-Standards an.
Konfigurations-Kaskadierungshierarchie
Konfigurationsoptionen kaskadieren über ein 3-stufiges Rangfolgemodell:
| Stufe | Priorität | Beschreibung |
|---|---|---|
| Root-Workspace-Konfiguration | Basis-Standard | Wird zuerst auf alle Workspace-Projekte angewendet. |
Projektkonfiguration (docmd.config.json) |
Höher | Überschreibt Root-Workspace-Standards für dieses spezifische Projekt. |
Projektnavigation (navigation.json) |
Höchste Priorität | Hat immer Vorrang beim Rendering der Sidebars. |
Ein navigation.json-Manifest auf Projektebene hat immer Vorrang vor jedem globalen navigation-Array, das in der Root-Workspace-Konfiguration definiert ist.
Das Projekt-Umschaltmenü UI
Der Projekt-Umschalter rendert eine barrierefreie Dropdown-Komponente, die es Lesern ermöglicht, zwischen Workspace-Unterprojekten zu wechseln:
{
"workspace": {
"switcher": {
"enabled": true,
"position": "sidebar-top"
}
}
}
| Position | Rendering-Ort |
|---|---|
sidebar-top (Standard) |
Oben in der Sidebar angeheftet, über den Navigationslinks. |
sidebar-bottom |
Unten in der Sidebar angeheftet. |
options-menu |
In das Header-Optionsmenü neben Suche und Theme-Schaltern integriert. |
Der Projekt-Umschalter wird automatisch gerendert, wenn zwei oder mehr Workspace-Projekte deklariert sind.
Asset-Verwaltung
- Geteilte Assets: Platzieren Sie Logos, Favicons und globales benutzerdefiniertes CSS im Root-Verzeichnis
assets/. Alle Workspace-Projekte erben diese Assets während der Entwicklung und Build-Kompilierung. - Projekt-Assets: Unterprojekte können lokale
assets/-Unterverzeichnisse führen. Projektspezifische Assets überschreiben geteilte Root-Assets bei Dateinamenskonflikten.
Entwicklungs- & Build-Befehle
Führen Sie den Multi-Projekt-Dev-Server aus:
npx @docmd/core dev
Baut alle Workspace-Projekte und stellt sie auf einem einzigen HTTP-Port bereit. Dateibearbeitungen lösen gezielte Hot-Updates pro Projekt aus, ohne den gesamten Workspace neu zu bauen.
Generieren Sie das Produktionspaket:
npx @docmd/core build
Gibt ein einzelnes konsolidiertes statisches Verzeichnis aus. Alle Projekte kompilieren in ihre jeweiligen Unterpfade, ohne dass Reverse-Proxy-Setups erforderlich sind.
Workspace-Einschränkungen
- Root-Projekt-Anforderung: Genau ein Projekt muss
prefix: "/"zuweisen. - Eindeutige Routenpräfixe: Jedes Projekt muss eine eindeutige URL-Präfix-Zeichenkette verwenden.
- Root-Level
out-Steuerung: Das Ausgabeverzeichnis (out) wird ausschließlich auf Workspace-Root-Ebene konfiguriert; Unterprojekt-Konfigurationen dürfenoutnicht angeben.
Konfigurations-Schema-Migration
Um ältere Workspace-Definitionen auf das moderne workspace-Schemaformat zu aktualisieren, führen Sie den automatisierten CLI-Migrationshelfer aus:
Führen Sie npx @docmd/core migrate --upgrade aus, um alte Konfigurationsdateien automatisch auf das v0.9.0-Workspace-Schema umzuschreiben.