Dieser Proposal implementiert ein automatisches Validierungssystem für Pull Requests in der NFDI4Chem Knowledge Base.
Datei: scripts/validate-content.js
- ✅ Prüft alle
mdundmdx-Dateien imdocs/-Verzeichnis - ✅ Validiert Frontmatter auf gültiges YAML und erforderlichen Slug
- ✅ Prüft Seitentitel (h1 oder title im Frontmatter)
- ✅ Warnt bei identischen h1 und title Werten
- ✅ Benutzerfreundliche Fehlerausgabe mit Zusammenfassung
- ✅ Exit-Code-basierte Fehlerbehandlung für CI/CD
Verwendung:
npm run validate-contentDatei: .github/workflows/pr-validation.yml
- ✅ Triggert automatisch bei Pull Requests
- ✅ Installiert Dependencies
- ✅ Führt Content-Validierung durch
- ✅ Führt Docusaurus Build durch
- ✅ Meldet Ergebnisse im PR
Features:
- Lädt Dependencies aus Cache (schneller)
- Node.js 18 (aktuell und stabil)
- Automatische Status-Updates im PR
- ✅ Neue devDependencies:
globundgray-matter - ✅ Neue npm Scripts:
npm run validate-content- Nur Validierungnpm run test:ci- Validierung + Build
- ✅
scripts/VALIDATION_SETUP.md- Detaillierte Setup-Anleitung - ✅
scripts/EXAMPLES.md- Praktische Beispiele für gültige/ungültige Dateien - ✅
scripts/README.md- Schnelle Übersicht - ✅
scripts/validation.config.js- Vorschläge für Erweiterungen
---
slug: /my-page/ # ✅ ERFORDERLICH - eindeutig
title: Page Title # ⚠️ Optional, aber empfohlen
description: ... # ⚠️ Optional, gut für SEO
---Validierungen:
- Slug muss vorhanden sein
- Slug muss ein String sein
- Slug darf nicht leer sein
- Mindestens eine der folgenden Optionen erforderlich:
h1Überschrift (# Title)titleim Frontmatter
- Wenn beide vorhanden:
- Sie dürfen nicht identisch sein
- Empfehlung: h1 detaillierter, title kürzer für SEO
- Docusaurus Build muss fehlerfrei laufen
- Keine Broken Links/Images (basierend auf docusaurus.config.js)
npm installDas installiert die neuen devDependencies.
# Nur Validierung
npm run validate-content
# Nur Build
npm run build
# Beides zusammen (wie der PR-Check)
npm run test:ciSiehe scripts/EXAMPLES.md für Lösungsbeispiele.
-
Vor dem Commit:
npm run validate-content
-
Vor dem Push:
npm run test:ci
-
Push und PR öffnen:
- GitHub Actions läuft automatisch
- Status wird im PR angezeigt
- PR kann nur gemerged werden wenn alle Checks bestanden sind ✅
- Automatische Validierung spart Zeit bei Code Reviews
- Konsistente Dokumentation garantiert
Neue NPM-Packages:
- glob (^10.3.10) - Datei-Pattern-Matching
- gray-matter (^4.0.3) - Frontmatter-Parsing
Beides sind kleine, etablierte Packages ohne weitere Dependencies.
🔍 Validiere Dokumente...
📁 Gefundene Dateien: 42
📄 docs/10_domains/example.md
❌ Fehler:
- Slug im Frontmatter fehlt
⚠️ Warnungen:
- h1 und Frontmatter-title sind identisch
📊 Zusammenfassung:
Dateien geprüft: 42
Fehler: 1
Warnungen: 1
❌ Validierung fehlgeschlagen!
Das System ist modular und kann leicht erweitert werden:
-
SEO-Validierung
- Meta description Länge
- Keywords prüfen
- Title length für Suchresultate
-
Link-Validierung
- Interne Links auf Existenz
- Externe Links erreichbar
-
Image-Validierung
- Dateien existieren
- Alt-Text vorhanden
- Bildgröße optimiert
-
Code-Qualität
- Spellcheck (deutsche Rechtschreibung)
- MDX-Lint
- Remark-Plugins
Siehe scripts/validation.config.js für Implementierungs-Ideen.
| Komponente | Dateien | Zeilen |
|---|---|---|
| Validierungsskript | 1 | ~150 |
| GitHub Actions | 1 | ~25 |
| Dokumentation | 4 | ~600+ |
| Config-Beispiel | 1 | ~150 |
| Total | 7 | ~925 |
-
Qualitätssicherung
- Konsistente Dokumentenstruktur
- Keine fehlenden Slugs/Titel
- Build garantiert fehlerfrei
-
Automatisierung
- Keine manuellen Checks nötig
- Sofortiges Feedback in PRs
- Spart Zeit im Review-Prozess
-
Developer Experience
- Klare Fehler-Meldungen
- Einfache lokale Tests
- Gute Dokumentation
-
Wartbarkeit
- Modular und erweiterbar
- Gute Code-Struktur
- Keine Abhängigkeiten auf externe Services
- Pre-commit Hooks (Husky) - lokale Validierung vor Commit
- Spellcheck (Cspell) - Deutsche Rechtschreibung
- Link-Checker - Interne Links validieren
- Image-Optimizer - Bildgrößen optimieren
- SEO-Tools - Meta-Tags prüfen
Status: ✅ Produktionsbereit - Sofort einsatzbar
Kompatibilität: Node.js 18+, alle OS (Linux, macOS, Windows)
Wartung: Minimal - nur 2 externe Dependencies