Migration du blog sous Hugo

J’ai remplacé le le moteur de blog statique Pélican par Hugo et à vrai dire, ce n’était pas prévu. Un peu cloué par le rhume pour le week-end, j’ai suivi la recommandation du médecin de rester tranquille. La cervelle fonctionnant encore un peu, j’ai consulté ma liste de projets pour l’année, vous savez cette liste mi-voeux / mi-résolutions qu’on établit en début d’année. En bonne place, j’avais noté “apprentissage ou perfectionnement dans un langage informatique”. Les années précédentes, j’ai fait un peu de Javascript, notamment un prototype de MVC avec MEAN, de la glue Web à droite à gauche mais j’ai toujours l’impression de partir de zéro avec ce langage. Pourtant Javascript est de plus en plus incontournable professionnellement, même pour un développeur plutôt teinté backend. Mais pour bien progresser il aurait fallu partir avec un objectif projet, pas des exemples.

Au lieu de ça, j’ai flâné sur Rust et Go, des langages bas niveau (rien de péjoratif). Cela fait un moment que je lorgne sur Go et franchement ce qui me retient c’est le fait que ce soit porté par Google. J’ai un peu en travers leur habitude de balancer les projets quand ils n’en ont plus besoin ou leurs ruptures sans compatibilité ascendante (hein Angular). Bref j’hésite à m’investir… Mais il faut reconnaître que Go est sorti en 2007, ils l’utilisent vraiment en interne (pas comme Angular) et ça me plairait de rajouter un langage plus bas niveau que Java ou Python avec des performances supérieures à mon catalogue. A force de traîner sur des sites qui parlent du langage Go je suis tombé sur Hugo, un moteur de blog statique. J’ai trouvé la documentation très bien écrite et c’est un point de plus en plus important pour moi. J’ai décidé de l’essayer… juste pour voir.

Je ne vais pas refaire pas la pub du blog statique. Démarré sur la plate-forme Blogger, j’ai successivement migré ce blog sous Wordpress, PluXml, puis Pélican et je ne reviendrai pas en arrière. D’un blog statique avec des articles écrit en Markdown il est aisé de migrer vers n’importe où et on maîtrise le code HTML généré (celui de Wordpress était particulièrement dégueulasse). En pratique ça m’a pris une heure pour écrire une moulinette qui a transformé mes articles au format de Hugo, c’est-à-dire qui a transformé les metadata de chaque article, le contenu restant au format Markdown.

Ce qui m’a pris du temps c’est le thème. J’ai testé quelques thèmes de contributeurs, beaucoup lu la documentation détaillant la création de son propre thème et je me suis lancé en transposant mon thème de Pélican (enfin les parties HTML CSS) en mieux : avec les parties spécifiques paramétrables, dans un esprit de réutilisation et de partage (oui c’est beau) même si ça n’arrivera probablement jamais car mon thème est.. moche mais beau pour moi, amélioré, raffiné au fil des ans, allégé avec Pure CSS. Si je devais changer un truc ce serait ajouter un peu couleur sur la bannière de haut de page, ça ferait moins de gris. Quand le thème a été achevé on aurait dit une copie du blog original mais qui se génère en 12 seconde au lieu de 5 secondes, la rapidité du langage Go compilé est réelle. J’ai retravaillé les catégories et utilise intelligemment les tags pour générer des flux RSS spécifiques notamment celui du Planet Libre. Le résultat est propre, exempt des années de bidouilles et de verrues que j’avais ajouté sur Pélican.

J’ai un peu tâtonné pour générer exactement les mêmes URL puis j’ai abandonné. J’ai préféré ajouter l’année dans l’URL d’un article, adieu mon référéncement Google et mes millions de lecteurs désorientés ;-) Pour limiter la casse, j’ai rajouté une règle au niveau du serveur HTTP pour rediriger les erreurs 404 vers la page d’accueil.

Dernière angoisse, est-ce que le langage Go allait être disponible sur OpenBSD ? La réponse est oui, et encore mieux, le projet Hugo fournit un binaire pour OpenBSD. La mise en place sur l’hébergement a été galette. Quant au système de gestion des commentaires il est à nouveau opérationnel (c’est l’avantage de maîtriser sa stack de logiciels) mais ça m’a donné un peu de fil à retordre… Cela fera le sujet d’un prochain article.


22Decembre - 2017-07-18 18:26:39

Hello

Moi aussi Hugo me tente bien, mais contrairement à toi, je trouve la doc pas terrible et surtout pas cohérente.

Par exemple, je trouve pas comment faire les URL (je veux garder mes an/mois/jours/…) et je dois vraiment maitriser le multilinguisme (joies et malheurs de vivre à l’etranger et parler trois langues).

Mon theme pelican actuel est pas mal, j’aimerais le garder (possiblement l’ameliorer en le mettant totalement en multilang), donc c’est galère. Pas trouvé comment faire un nuage de tags non plus.


Yax - 2017-07-18 18:41:45

Pour le nuage de tags je n’ai pas la réponse mais pour les autres sujets c’est ici :

Sachant que même si tu composes tes URL avec les mêmes composants, elle ne seront pas identiques car pour un article toto paru le 2017/07/18, Pelican va générer /2017/07/18/toto.html alors que Hugo va créer un répertoire /2017/07/18/toto/ avec un fichier index.html dedans. Ca peut peut-être se résoudre avec de la réécriture au niveau du serveur HTTP si le référencement est important pour toi.


22decembre - 2017-07-18 18:51:50

Pelican va générer /2017/07/18/toto.html

Non, mon Pelican actuel fera :

/2017/07/18/toto-fr/index.html

Les liens indiqués, je les ai lus… C’est pas encore gagné hein ! :D


Yax - 2017-07-18 18:56:52

Tu as été plus malin que moi qui n’avait aucune personnalisation d’URL sur Pelican et qui avait tout à plat.

Ouais y’a du taf… pour porter mon thème ça m’a pris une après-midi et une soirée de peaufinage / amélioration.


22de.eucembre - 2017-07-20 12:24:19

J’ai bien peur que ca me prenne plus de temps qu’une soirée.


Justin Bridouz - 2017-07-23 10:24:20

Salut,

Merci pour le billet, toujours sympa de voir la réflexion derrière des changements :)

Pour ma part j’ai fait le chemin inverse en passant d’Hugo à Pelican.

Hugo est vraiment plus rapide à la génération et le fait que tout tienne dans un seul fichier binaire est vraiment plaisant.

Mais je trouve Pelican beaucoup plus complet avec ses plugins disponibles et d’une manière général Python me paraît plus accessible pour un néophyte que Golang.

@+