Hugo ist ein Generator für statische Seiten, welcher auf der Programmiersprache Go basiert. Die Inhalte werden mit Markdown verwaltet und dynamisch in HTML umgewandelt. Dies ist für die meisten kleineren Projekte interessant, weil ausreichend und im Vergleich zu einem dynamischen Content Management System einfacher zu handhaben; zudem sind statische Seiten auch in Bezug auf Sicherheit und Performanz unschlagbar (siehe auch: Vorteile statischer Seiten).
Der Build lässt sich dann z. B. mit GitHub Actions durchführen (zum Einsatz kommt hierfür z. B. diese Action), wobei die resultierende Seite direkt mit GitHub Pages betrieben werden kann. Wer den Komfort einer UI zur Pflege der Inhalte nicht missen möchte, kann ein entsprechendes Frontend obendrauf packen.
Hugo bietet eine Reihe von CLI-Kommandos, mit denen sich häufige Tasks ausführen und auch automatisieren lassen. Während das Hauptkommando eine Seite einfach nur baut, ist für die Entwicklung die server-Direktive wichtig: hiermit wird ein kleiner Webserver gestartet, der das Dateisystem automatisch auf Änderungen überwacht und die Testseite im Browser - per Standard via localhost:1313
aufrufbar - automatisch aktualisiert. Damit werden sowohl inhaltliche Anpassungen als auch optische Überarbeitung (z. B. in SCSS) direkt sichtbar, sobald eine Datei gespeichert wird.
Mit folgendem Kommando wird dies noch weiter vereinfacht:
|
|
Der Parameter -D
bezieht auch als Entwurf (Draft) markierte Inhalte mit ein; --navigateToChanged
sorgt dafür, dass nach Änderungen in Markdown-Dateien im Browser automatisch zur entsprechenden Unterseite gewechselt wird. Mit --disableFastRender
wird nach jeder Anpassung ein kompletter Rebuild veranlasst.
Im Prinzip kann man die Entwicklung damit super handhaben, solange man das auf einer einzelnen Maschine tut. Wenn man aber mit mehreren Kollegen an einem Projekt arbeiten möchte und/oder unterschiedliche Geräte getestet werden sollen, wird das etwas umständlich, da die im Entwicklungsmodus über den in Hugo integrierten Webserver zur Verfügung gestellte Seite per Standard nur über localhost
, nicht aber über die IP-Adresse oder den Hostnamen der entsprechenden Maschine erreichbar ist.
Um dieses Problem zu adressieren, gibt es den Parameter --bind
, mit dem sich ein Interface zum Binden des Webservers angeben lässt. In diesem Beitrag wird gezeigt, wie sich das nutzen lässt. Damit kann man die Seite von mehreren Geräten aus parallel aufrufen.