Nicolas Friedli

Minification

La minification des fichiers permet de réduire leur taille tout en restant «identiques». Avec Hugo, les fichiers HTML, CSS, JSON et XML sont minifiés. Hugo utilise minify de Taco de Wolff.

Minification en ligne de commande

La version la plus simple pour minifier ses fichiers, c’est de l’appeler en ligne de commande. Soit à la compilation:

hugo --minify

soit en développement:

hugo server --minify

Sans configuration explicite, ce sont les options par défaut qui sont utilisées. Elles fonctionnent très bien.

Minification par configuration

Dans le fichier général de configuration hugo.toml, il est possible d’activer la minification par défaut, tant en production qu’en développement.

[minify]
minifyOutput = true

Bien entendu, la séparation des fichiers de configuration est toujours possible, comme je l’explique sur la page dédiée aux fichiers de configuration. Il en va de même pour les autres formats de fichiers de configuration (JSON ou YAML). La meilleure solution, c’est de minifier en production, mais pas en développement.

En pratique

Sur ce site, la configuration de la minification se présente de manière suivante:

[minify]
minifyOutput = true

[minify.tdewolff.html]
keepDefaultAttrVals = false
keepQuotes = true
keepWhitespace = true

L’ensemble des options disponibles et des valeurs par défaut est disponible dans la section Configure Minify de la documentation officielle. Les options sont discutées en détail sur la page de référence de minify.

La feuille de style de colorisation syntaxique est générée par:

hugo gen chromastyles --style=dracula > assets/css/chroma.css

Puis optimisée par CSS Minifier avant de passer par Hugo. J’évite ainsi les répétitions inutiles et les balises vides.

Minification efficiente

L’outil minify est extrêmement rapide. Mais il ne fait pas d’optimisation structurelles. En d’autres termes, il ne réécrit pas complètement la feuille de style, mais la minifie seulement. Pourtant, c’est efficient: raisonnablement efficace par rapport au coût quasi nul (en temps, en énergie ou en complexité).

S’il fallait être plus efficace, dans l’absolu, il serait possible d’utiliser des outils tiers. Mais ils demandent l’installation de logiciels comme node et font perdre à Hugo sa simplicité (et sa rapidité). C’est pourquoi j’ai préféré optimiser la feuille de style de colorisation une fois (elle ne changera pas) dans un outil en ligne.

Pour une optimisation maximale, voir par exemple:

Une optimisation moins forte, mais plus simple, peut-être obtenue par Hugo. Elle requiert quand même node, mais est simple à mettre en œuvre: How to Use PurgeCSS With Hugo par Zachary Wade Betz.

Le gain est trop faible par rapport à la complexité supplémentaire. J’en reste donc à l’outil par défaut de Hugo qui me paraît le plus efficient.