Hugo-Toolbox | App

Was ist das?

Hugo-Toolboxexternal link ist mein persönliches Swiss-Army-Knife für den Hugoexternal link Website Builder: githubexternal link

Wer seine Hugo-Webseite mit Visual-Studio Codeexternal link verwaltet, könnte das hilfreich finden. Es enthält bis jetzt 4 Tools die im Terminal ausgeführt werden, und die auch separat verwendet werden können:

  1. hugo-clean-cache bereinigt den Hugo Cache auf intelligente Weise: githubexternal link
  2. hugo-update-lastmod verfolgt die Änderungsdaten von Bildern und legt lastmod in Markdown/Frontmatter fest: githubexternal link
  3. hugo-broken-links-checker überprüft die Website auf defekte Links: githubexternal link
  4. sftp-push-sync lädt deine Hugo-Website über SFTP und eine echte Push-Synchronisierung hoch: githubexternal link

Detaillierte Anleitungen und den download findest du in den jeweiligen Git-Repos.

hugo-clean-cache

hugo-clean-cache ist ein CLI-Tool zum sicheren Bereinigen von Hugo-Caches und Ressourcen. Das Tool…

  • erkennt automatisch den Cache-Pfad
  • berücksichtigt die Konfiguration von Hugo
  • funktioniert unter macOS, Linux und Windows (WSL/Git Bash/Node)

Der Hugo-Cache hat drei typische Nebenwirkungen:

Insbesondere generierte Bilder (Miniaturansichten, Größenänderungen, Ausschnitte) bleiben häufig im Cache erhalten. Beim Ersetzen von Bildern kommt es oft vor, dass …

  1. Hugo veraltete Bilder anzeigt
    • Die alten Versionen werden weiterhin verwendet.
    • Selbst nach hugo --cleanDestinationDir werden falsche Dateien angezeigt.
    • Resultat: Eine Bildergalerie zeigt „Geisterbilder“ an.
  2. resources/_gen wird riesig und unübersichtlich
    • Hugo speichert alle generierten Assets hier:
      • resources/_gen/images/
      • resources/_gen/assets/
      • Das kann zu Tausenden von Dateien führen, die Hunderte von MB beanspruchen.
  3. Das Debuggen wird schwierig
    • Wenn man CSS, SCSS, Bilder, Optimierungen oder Größen ändern, reagiert Hugo manchmal nicht sofort, da es zwischenspeichert.

Ein wirklich sauberer Cache-Reset schafft klare Bedingungen. Das Skript löscht alles, was Hugo beim nächsten Build neu generieren wird.

Was wird gelöscht?

  • resources/_gen: Von Hugo generierte Assets (CSS, JS, Bilder)
  • public/*: Alles, was Hugo bei jedem Build neu generiert
  • Bild-Cache: wird über hugo.toml oder defaults gefunden
    • :cacheDir
    • [caches.images]
    • macOS-Standard ~/Library/Caches/hugo_cache
    • Fallback $TMPDIR/hugo_cache

Was wird NICHT gelöscht?

Das Skript löscht keine produktiven Inhalte,

  • keine Markdown-Dateien
  • keine Designs
  • keine Inhalte

Es entfernt nur Dateien, die Hugo reproduzieren kann.

hugo-update-lastmod

Überprüft, ob sich Bilder in den Galerien unter content/galleries geändert haben. Aktualisiert die lastmod-Eigenschaft im Frontmatter der jeweiligen index.md.

Im Detail:

Scannt die Bilddateien für jede Galerie unter galleries/gallery-1 (Bundle-Verzeichnis). Kein Git erforderlich – alles basiert auf dem Dateisystem (Hash, Größe).

  • Für jedes Bundle:
    • Bildbestand mit letzter Ausführung vergleichen (Cache)
    • Änderungen zählen: + hinzugefügt, ~ geändert, − gelöscht
    • lastmod-Eigenschaft in index.md Frontmatter einfügen oder aktualisieren.
    • Ausgabe:
      • Pro Bundle: Status + Bildunterschiede
      • Global: Gesamtzahl der Bundles und Bildänderungen
      • Schreibt eine .hugo-update-lastmod.cache.json-Datei in Ihren Projektstammordner

Prüft meine Hugo Webseite nach defekten links. In Verbindung mit ein paar Shortcodes zeigt es eine Statistik dazu an und eine Seite mit der man die Links einfach findet und korrigieren kann.

sftp-push-sync

Führt eine Push-Synchronisierung durch:

  • Neue Dateien hochladen
  • Remote-Dateien löschen, die lokal nicht mehr vorhanden sind
  • Änderungen anhand der Größe oder des geänderten Inhalts identifizieren und hochladen

Funktionen:

  • Mehrere Verbindungen in sync.config.json
  • dry-run mode
  • spiegelt local → remote
  • Dateien hinzufügen, aktualisieren, löschen
  • Text-Diff-Erkennung
  • Binärdateien (Bilder, Videos, Audiodateien, PDFs usw.): SHA-256-Hash-Vergleich
  • Hashes werden in .sync-cache.*.json zwischengespeichert
  • Parallele Uploads/Löschungen über Worker-Pool
  • include/exclude Patterns
  • Sidecar-Uploads/-Downloads - Umgehen des Synchronisierungsprozesses