--- title: "Rant : Hugo et Tailwind" date: 2022-02-12 tags: [ "Rant", "Hugo", "Tailwind", "Framework", "Site statique", "CSS", "Frontend", "Javascript" ] --- Si vous lisez mon blog de temps en temps, vous saurez que j'ai publié [quelques articles](/tags/hugo/) concernant [Hugo](https://gohugo.io/), le gestionnaire de sites statiques. En revanche, ce que seuls les plus attentifs auront remarqué, c'est que je suis passé à [Tailwind CSS](https://tailwindcss.com/) il y a près de trois ans, et que dans l'ensemble, j'en suis plutôt satisfait. Ou plutôt, j'en _étais_ satisfait. ## Disclaimer Alors, oui, je vais pester sur Hugo, Go, Tailwind et Javascript. Oui, je suis un développeur PHP, et un connard de boomer (enfin je crois). Oui, je connais mieux les ficelles de PHP que de Go. Non, je ne suis pas _officiellement_ un développeur frontend, mais j'ai un certain passif dans l'usage et la diffusion des standards du web (c'est d'ailleurs pour ça que le sujet [me touche particulièrement](/blog/2022/01/21/l-informatique-c-etait-mieux-avant/#les-années-2010--la-connerie-humaine-au-grand-jour)). C'est dans le titre : je vais faire du [_rant_](/tags/rant/). Si vous me connaissez, vous savez que je ne vais pas y aller avec le dos de la cuiller. Vous voilà prévenus. ## Hugo Comme son nom l'indique, Hugo est écrit en Go, ce qui présente certains avantages, mais aussi de lourds inconvénients qui commencent à sérieusement me gonfler au fil des jours. Les critiques que je vais formuler ici ne sont pas toutes dues au langage dans lequel Hugo est écrit, cependant. ### Trois formats de configuration JSON, YAML et TOML. Sérieux, choisissez-en un et foutez-nous la paix. Trop de choix tue le choix. C'est trop facile de faire un mauvais choix. Si tu paries sur le mauvais format et que les développeurs d'Hugo font le choix de supprimer son support, t'es bon pour réécrire toute ta configuration. Vous m'objecterez sans doute qu'il y a peu de chances pour que ça arrive : JSON est pratiquement universel _de facto_, yaml a le vent en poupe grâce à des poids lourds qui le mettent en avant (c'est pas pour autant que _moi_ je le cautionne). Par contre, jamais entendu parlé de toml avant Hugo. Le problème avec ce choix, c'est la portabilité. Si quelqu'un a fait le choix de toml alors que moi j'utilise json, et qu'il publie une configuration que j'ai envie de réutiliser, je dois la réécrire. C'est particulièrement pénible quand ça concerne les thèmes et leurs variables. ### Rien n'est intuitif La documentation de Hugo est imbitable. On ne sait pas quoi chercher ni où. Ça devrait être simple pourtant : configuration de base, 2-3 options de formatage, quelques fonctions pour les assets (CSS et Javascript), et on devrait être bons. Non : pour Hugo, la gestion des assets se fait dans des _pipes_. Comment tu peux savoir que tu dois chercher _pipes_ quand tu veux minifier un CSS ou obtenir le hash d'un asset ? Formater une date avec Hugo ? Pas de problème. [Selon la documentation](https://gohugo.io/functions/format/#gos-layout-string), si tu veux obtenir `Friday, March 3, 2017`, tu fais `@{{ .Date | time.Format "Monday, January 2, 2006" }}`. Pour les autres langues, au hasard le français, [débrouilles-toi](https://pkg.go.dev/time#ANSIC). Tu veux générer une datetime dans un [format valide](https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-time-element) pour la mettre dans une balise `