Hugo Tipps

♦ Lesezeit: 2:12

Hugo ist trotz der 0.55 Version schon ein sehr guter Static Site Generator. Manches ist nicht immer ganz intuitiv. Und trotz der wirklich guten Dokumentation funktioniert nicht alles gleich auf Anhieb. Auch die Beispiele sind ohne Erläuterung nicht immer auf Anhieb verständlich. Menu und Ranges find ich eher schwierig, liegt vielleicht auch nur daran, das ich kein GO kann. Und die Summery Funktion, die auf Übersichtsseite Blog benutz wird, ist noch nicht ganz perfekt. 1

Im folgenden ein paar Tipps und Tricks:

Aufbau des Projektes

Um Projekte, Theme und die generierten Daten besser zu trennen, habe ich die Entwicklungsstruktur angepasst. Dies ist mit HUGO sehr leicht möglich.

Meine Entwicklungsstruktur sieht wie folgt aus:

Verzeichnis
    Projekt 1
    Projekt 2
    themes
        base
        minimal
    tmp
        public

Um das von Projekt 1 und 2 gemeinsam genutztes Theme aus den Projekten herauszulösen, muss in der config.toml folgendes stehen:

theme = "base"
themesdir = "../themes"

Das erspart einem dann Copy and Paste oder Alias/Link Lösungen.

Um die generierten Seiten aus den Projektverzeichnissen herauszuhalten, muss in der config.toml folgendes stehen:

publishDir = "../tmp/public/project1"

Es ist sinnvoll, immer wieder neu erzeugbare Dateien aus dem Projektverzeichnis und SCM2, herauszuhalten.

URL’s mit Protokoll und Server vermeiden

Wird HUGO in ein Unterverzeichnis deployed, muss man entweder .Site.BaseURL nutzen, oder sich eine eigene Variable definieren. Mit .Site.BaseURL hat man immer unnötigerweise das Protokoll und Server in der URL. Mit einer eigene Variable, wie z.B.

[params]
    baseDir = "/project1/"

kann man dies vermeiden.

Debugging

Hilft auch hier weiter. In der config.toml haben ich eine Schalter 3 debug eingefügt:

[params]
    debug = true

In den Templates habe ich ganz am Anfang folgendes eingefügt:

{{ if $.Site.Params.debug }}
    default: list.html - Kind: {{ .Kind }} - Type: {{ .Type }}
{{ end }}

Der jeweilige Template Namen muss natürlich angepasst werden.4

Dann kann man sofort sehen, welche Seite mit welchem Template gerendert wird. Dies ist insbesondere am Anfang oder mit sehr vielen Templates eine Erleichterung. Und hilft auch fremde Projekte zu untersuchen.

Mit

printf "%#v" .

kann man innerhalb der Templates Debug Ausgaben machen.5

public löschen

Wenn man Templates löscht, oder neue erstellt und die Seite verhält sich unerwartet, kann es helfen, public zu löschen. Und dann ist es besser, dies ist außerhalb des Projektverzeichnisses.


  1. Aber meckern ist leicht, machen ist schwer. Darum vielen Dank an die Macher von HUGO! ↩︎

  2. Aus dem SCM kann man es z.B. mit GIT leicht herausnehmen, indem man public/ in .gitignore einträgt. Besser ist aber, temporäre Daten erst gar nicht im Projektverzeichnis zu haben. ↩︎

  3. Fällt dem Programmierer nicht mehr ein, baut er einen Schalter ein … ↩︎

  4. Lösung ist noch nicht perfekt, schöner wäre ein partial mit Parameterübergabe. Da muss ich noch was forschen … ↩︎

  5. In den Anfängen der Softwareentwicklung mit VI und ohne IDE war das Debugging mit print Statements Standard - und es funktioniert immer noch. ↩︎

#Hugo #Web