Créé le 2023-12-17

Pourquoi j'ai choisi Hugo

Je me suis mis en tête de que je voulais pouvoir gérer mes articles et mon site depuis n’importe où, avec n’importe quel périphérique. Cette flexibilité devait bien-sûr être la plus simple possible, pas question d’avoir un éniemme serveur à gérer, je ne suis pas au travail que diable!
Refaire complètement un site web sans utiliser de CMS et automatiser la “mise en production” voila le challenge qui a découlé de cette réflexion, tout ça en essayant quelque chose de nouveau pour moi.

Vers un web efficace et statique 🚀

Hugo est un framework cross plateforme basé sur le language Go, qui exploite des modèles facilement personnalisables et adaptable à tout les besoins.

hugo logo Hugo static website generator par ici

Il permet de générer des sites web statiques facilement hébergés par des serveurs gratuits comme Gitlab Page ou Github Pages. Site web statique signifie qu’il n’y a pas de backend, pas de possibilité d’exploiter une base de donnée locale ou de faire des rendus calculés pour l’utilisateur (comme l’accès à un compte d’utilisateur).

Cette philosophie de générer uniquement le nécessaire pour l’affichage et de ne pas avoir de “calcul inutile” pour le rendu m’a séduit. Cela permet une consommation réduite de ressources, évite les risques de sécurités (minimes dans mon cas) et réduit le nombre de problèmes d’affichage.

Comment ça marche ?

alt go!

Sur le principe tout se passe en ligne de commande et de façon barbue avec un éditeur de texte. C’est bien ça qui rend la technologie sexy ! Pas besoin d’IDE ou d’outils annexes. L’utilisation de git et de l’intégration continue permet d’écrire un article directement depuis l’éditeur de texte sur un navigateur internet et de le publier aussi simplement.
Le principe de la construction d’une page web avec hugo est d’exploiter des template mélangeant html et “shortcodes” hugo. Le template est finalement un empilage de commandes interprétées et de html, css et js. Certaines options peuvent être spécifiées dans le texte de l’article pour conditionner des composants ou des champs lors de la génération.

Pour commencer

D’abord installer le sdk hugo , git doit aussi être installé sur le terminal.
Pour faciliter le job, il existe une extension à VSCode qui permet de générer quelques petites choses pour les moins barbus : l’extension FrontMatter. Il est possible d’installer d’autres extensions pour rendre l’écriture un peu plus efficace, voir les Ressources.
La création de la structure de fichier est automatisée, il faut se placer dans un repertoire vide, ça commence comme ça :

hugo new site

La structure générée est la suivante:

Appliquer un thème

Ok, maintenant, choisir un thème pour le site : Les thèmes ici
Les thèmes des sites hugo sont récupérés comme des submodules git ce qui permet de récupérer indépendamment les modifications si il y en a. Exemple avec le thème ananke:

cd monsite
git submodule add https://github.com/theNewDynamic/gohugo-theme-ananke.git themes/ananke

Du contenu ! ✒

Le contenu géré par hugo est au format markdown (.md), ce qui permet d’avoir un formalisme simple et efficace pour l’écriture MAIS empêche de faire des choses ultra shiny sans modifications ou ajouts de plugin spécifiques (exemple: ajouter une galerie d’image nécessite d’intégrer des fonctionnalités au site hugo comme nanogallery2).

Les types de contenu

Hugo permet de distinguer une page “seule” comme cet article et une page “liste” de contenu comme une catégorie. Le template graphique appliqué ne sera ainsi pas le même.

Ajouter du contenu

Il est possible d’ajouter du contenu de plusieurs manières:

Ressources

Pour se lancer rapidement

Ressources de personnalisation