Das Projekt verwendet eine manuelle JavaScript-Bundling-Lösung ohne externe Ruby-Gems:
Die Dateien navigation.js und accessibility.js werden automatisch zu einer einzigen Datei zusammengeführt:
- Quelle:
assets/js/core.js - Methode: Jekyll Liquid
{% include_relative %} - Ergebnis: Eine kombinierte Datei wird bei jedem Jekyll-Build generiert
Die Suchfunktion bleibt separat, da sie:
- Nur auf Such-Seiten benötigt wird
- Eine externe Abhängigkeit (lunr.js) hat
- Mit
deferbereits lazy-loaded wird
Für Production-Builds steht ein npm-basiertes Minifier-Tool bereit:
# Node.js Abhängigkeiten installieren
npm install
# Nur Core-Bundle minifizieren
npm run minify
# Nur Search minifizieren
npm run minify-search
# Alles minifizieren
npm run minify-all
# Kompletter Build mit Minifizierung
npm run buildassets/js/
├── core.js # Bundle-Datei (kombiniert navigation + accessibility)
├── navigation.js # Navigation, Mobile Menu, Search Toggle
├── accessibility.js # ESC-Taste, Smooth-Scroll, Lazy-Loading, Hero-Bilder
└── search.js # Lunr-basierte Volltextsuche (separat)
bundle exec jekyll buildnpm run buildDie minifizierten Dateien befinden sich dann in _site/assets/js/.
Wenn Sie neue JavaScript-Funktionen hinzufügen möchten:
- Globale Features (auf jeder Seite): Zu
navigation.jsoderaccessibility.jshinzufügen - Seiten-spezifische Features: Separate Datei erstellen und nur auf relevanten Seiten laden