Hugo permet nativement l’usage de SASS / SCSS, nous allons ici voir comment le mettre en place avec le thème Beautifulhugo, qui est utilisé sur ce site dans une version légèrement modifiée.
Vous devez utiliser Hugo dans sa version extended
Vous pouvez connaître votre version de Hugo avec la commande hugo version
Consultez à la documentation si nécessaire, et plus particulèrement cette partie pour l’installation sur Linux
Mise en place en local
-
Première étape, créez un dossier
assets
à la racine de votre projet.
Il est important que ce dossier s’appelle ainsi, en revanche les noms de fichiers et de dossiers qui viennent ci-dessous sont adaptables selon vos envies. -
Placez dans ce dossier un fichier en
.scss
, de préférence dans un sous-dossier dédié aux fichiers Sass. Nous allons dans cet exemple utiliser le fichierassets/scss/custom.scss
. Vous pouvez y mettre quelques lignes de code pour le test. -
Créez un second fichier
layouts/partials/head_custom.html
depuis la racine de votre projet et insérez ces quelques lignes:{{ $styleSass := resources.Get "scss/custom.scss" }} {{ $styleCSS := $styleSass | resources.ToCSS }} <link rel="stylesheet" href="{{ $styleCSS.Permalink }}">
Voilà, c’est tout ! À chaque modification de votre fichier custom.scss
, Hugo se charge de le retranscrire en CSS et de l’insérer dans la page.
Si vous faites un petit git status
vous verrez que les fichiers CSS générés automatiquement sont placés dans le dossier resources
, nous y reviendrons dans un instant.
Publication en ligne
Une fois que vous avez commité puis pushé les fichiers custom.scss
et head_custom.html
prenez le temps de jetez un œil aux Pipelines.
Si le build échoue, vous devriez avoir un message comme celui-ci:
Building sites …
ERROR 2021/01/26 00:16:13 error: failed to transform resource:
TOCSS: failed to transform "scss/custom.scss" (text/x-scss):
this feature is not available in your current Hugo version,see https://goo.gl/YMrWcn for more information
Cela signifie que votre hébergeur ou que votre configuration ne permettent pas d’utiliser Hugo version extended. Deux possibilités s’offrent à vous:
Si vous avez le bon goût d’utiliser Frama.io, vous pouvez mettre à jour votre configuration.
Si vous ne pouvez pas modifier cette configuration, il vous faut pusher le contenu du dossier resources
à chaque modification de votre fichier .scss
, sans quoi vos modifications n’apparaîtront pas en ligne.
Ressources
- La gestion des assets avec Hugo
- Introduction aux Hugo Pipes (en)
- Un vieux thème qui gère ça, par Bep en personne - Demo (en)
- SASS Processing with Hugo Pipes (en)
Compatibilité avec Hugo basic, qui est peut-être la partie la plus complexe à appréhender: