Stranger Than Usual

Hugo

Anfang dieses Jahres (und Ende letzen Jahres) habe ich angefangen, ein kleines Lexikon für eine meiner Rollenspielrunden zusammenzuschreiben. Die Welt, in der das Rollenspiel spielt, hat sich unsere Spielleiterin selber ausgedacht, und da es in der Kampagne darum geht, längst vergessene Geheimnisse eines versunkenen Kontinents zu erkunden, ist Wissen über die Welt auch wichtig.

Aber es ist eine ganze Menge, verteilt über viele kleine Schnipsel, hin und wieder sogar mit Illustrationen, ebenfalls von unserer Spielleiterin angefertigt. Also wollte ich das ganze mal als Lexikon-Website erfassen.

Ideal wäre natürlich eine Art Wiki-Software gewesen. Dafür gemacht, schnell damit zu arbeiten und viele Informationen einzupflegen, mit mehreren Leuten. Aber das hätte einen ganzen Rattenschwanz von anderen Dingen hinter sich her gezogen: Datenbanken, Updates, Benutzeraccounts etc. Viel zu viel Arbeit für so ein kleines Projekt.

Aber ich wollte schon länger einmal Hugo ausprobieren. Für dieses Blog hier habe ich ja meinen eigenen maßgeschneiderten Generator geschrieben, aber das ist alles andere als ökonomisch sinnvoll. Also Hugo als static site generator.

Die positiven Seiten

Seiten erstellen mit Hugo ist ziemlich befriedigend. Es gibt einige hilfreiche Tutorials und Dokumentationen. Die Software selber erstellt mit einem Kommando die Seite. Es gibt ein paar Methoden, Templates zu schreiben, die man dann mit Markdown füllen kann. Dinge wie Tags und Kategorien kann man mit Bordmitteln einfach hinzufügen, und mit minimal mehr Aufwand bietet das „taxonomy“-System auch andere Möglichkeiten, Inhalte zu gruppieren.

Es gibt Präprozessoren für scss und tools, um mit Bildern umzugehen, so kann man zum Beispiel in Templates einfach kleinere Versionen von Bildern erstellen, um Bandbreite zu sparen. Man kann den Markdown-Dateien in einem Header noch beliebige Attribute hinzufügen, wenn man noch ein paar Metadaten für die Inhalte braucht.

Kurz: Fast alles was man braucht, ist von Anfang an dabei.

Die negativen Seiten

Natürlich gibt es auch ein paar Dinge, die eher unschön sind. Dieser ganze taxonomy-Kram ist eher unhandlich, es ist schwierig, auf beliebigen Seiten zum Beispiel die Artikel genau einer Kategorie zu listen.

Die Bildverarbeitung ist eingeschränkt: Es ist sehr einfach möglich, skalierte Versionen von Bildern in Templates zu verwenden. Aber meistens will man die Bilder ja in den Markdown-Dateien einbinden. Dort stehen die Tools zum Skalieren nicht zu Verfügung. Die einzige Lösung dafür, die ich bisher gefunden habe, ist, eigene shorthands dafür zu schreiben. Zumindest glaube ich, dass das funktionieren könnte.

Auch gibt es keine Möglichkeit, die erstellten Seiten direkt beim Generieren zu komprimieren. Wenn ich also gzip oder brotli als transfer-encoding verwenden möchte, muss ich das manuell machen.

Da ergibt sich aber das nächste Problem: Hugo baut immer alle Seiten. Selbst wenn sich die Quelle für die Seiten nicht geändert hat. Das bedeutet, dass zum Beispiel rsync mit Standardeinstellungen immer alles neu hochlädt. Um das zu verhindern, muss man das --checksum-flag mitbenutzen, was aber bedeutet, dass rsync auf beiden Seiten alle Dateien einmal komplett einlesen muss. Außerdem wird es dadurch noch schwieriger, die Dateien in einem weiteren Schritt zu komprimieren, weil das lange dauert und ich es gerne nur für die Dateien mache, die es nötig haben.

Fazit

Trotz allem ein ausgereifter static site generator. Für kleinere Projekte definitiv zu empfehlen, für größere Seiten muss man schauen. Aber die meisten größeren Seiten haben ja sowieso meist Bedarf für dynamischen Inhalt, das kann ein static site generator nicht.

Ach, und die erstellte Lexikonseite ist nicht wirklich öffentlich, also verlinke ich sie hier nicht.