Migreren van Jekyll naar Hugo
Dec 10, 2017
Reading time: 3 minutes
Laat ik eerlijk zijn. Migreren van Jekyll naar Hugo was niet zo makkelijk als ik dacht.
Het eerste probleem was het begrijpen van de mappenstructuur. De handleiding van Hugo was niet erg duidelijk over de beste aanpak. Ik ben erachter gekomen dat je minstens drie bestanden nodig hebt. Je hebt een ‘home.html’ nodig voor de voorpagina, die je in je ’layouts’ map moet zetten. Daarnaast heb je daarin een ‘page.html’ en een ’list.html’ bestand nodig. Hun naam vertelt je wat ze doen: de inhoud van een specifiek content type (sectie) tonen in een lijst en één enkel contentbestand weergeven. Wil je een afwijkende lijstweergave voor ‘posts’ (of voor een ander content type, ook wel ‘sectie’ genoemd), maak dan gewoon een map aan in je ’layouts’ map met de naam van je content type, in dit geval ‘posts’.
Het tweede probleem was de Go templating taal. Die is niet erg voor de hand liggend en ik heb het er behoorlijk zwaar mee gehad om het werkend te krijgen. Zo blijkt {{ if gt (len . ) 0 }} geldig te zijn in de ‘Go templating taal’. Je moet weten dat in deze taal de functie altijd vooraan staat. Het voorbeeld {{ if gt (len . ) 0 }} betekent letterlijk ‘als | groter dan | lengte van het huidige item | nul’. Je moet begrijpen dat dit betekent ‘als de lengte van het huidige item groter is dan nul’. Vanuit taal- en grammaticaoogpunt is dat niet erg logisch. Het wordt een flinke hoofdpijn zodra het om iets ingewikkeldere statements gaat, zoals deze: {{ if and (or (isset .Params "title") (isset .Params "caption")) (isset .Params "attr")}}. De notatie lijkt op geen enkele andere taal die ik kende, waardoor zelfs basale logica erg lastig te implementeren was (ondanks mijn 10 jaar programmeerervaring). De leercurve van Go is extreem steil. Amber en Ace hielpen ook niet.
Het derde probleem was Forestry.io. Ik gebruikte CloudCannon met Jekyll en ik bleek verwend te zijn. Forestry heeft heel specifieke ideeën over hoe mijn markdown opgemaakt moet zijn. Zo eisen ze een lege regel aan het eind van het YAML / front matter blok. Ook moet de content direct na het einde van de front matter beginnen. Een witregel daar is niet toegestaan. Als je hun codestijl niet volgde, leidde dat alsnog tot ongewenste code-updates die dit afdwongen, met een extra pull en merge bij elke push die ik deed. Daarnaast braken hun updates mijn code meer dan eens, omdat ze problemen hadden met het parsen van grote inline SVG-bestanden. Werken met Forestry.io voelt als werken met een eigenwijze collega. Op zijn zachtst gezegd niet erg prettig. Maar ik moet niet te veel klagen… want het is behoorlijk geweldig dat hun dienst gratis is (en de meeste mensen hébben ook echt eigenwijze collega’s, en die redden zich ook).
Maar goed… mijn Jekyll Codex website heeft 1425 milliseconden nodig om te bouwen, terwijl deze website in minder dan 100 milliseconden bouwt. Dat is meer dan 10 keer zo snel. Dat moet toch iets waard zijn.
Fenix & Joost
