wiki/HowtoHugo.md

72 lines
3.7 KiB
Markdown
Raw Permalink Normal View History

2022-12-07 15:30:57 +01:00
# Howto Hugo
* Documentation : <https://gohugo.io/documentation/>
[Hugo](https://gohugo.io) est un générateur de sites web statiques publié sous licence Apache 2.0. Comme son nom le suggère, il est écrit en langage Go. Il utilise le système de modèles (*templates*) de Go pour traiter le texte et le html.
## Installation
2022-12-07 15:36:50 +01:00
Il est possible d'installer Hugo à partir des dépôts standards de Debian 10 (Buster) ou Debian 11 (Bullseye) :
2022-12-07 15:30:57 +01:00
~~~
# apt install hugo
~~~
Cela dit, le développement rapide de Hugo fait que ces versions (0.55.x pour Buster et 0.80.x pour Bullseye) sont plutôt anciennes. Il est possible de télécharger le .deb de la [dernière version stable](https://github.com/gohugoio/hugo/releases) directement sur GitHub et de l'installer sur son ordinateur avec `dpkg -i <nom-du-paquet.deb>` (en tant que *root*).
~~~
$ hugo env
hugo v0.92.2+extended linux/amd64 BuildDate=2022-02-23T16:47:50Z VendorInfo=debian:0.92.2-1
GOOS="linux"
GOARCH="amd64"
GOVERSION="go1.17.3"
~~~
## Premiers pas
Pour se familiariser avec Hugo on peut démarrer un nouveau projet de site de cette façon :
~~~
$ hugo new site un-site-en-exemple
cd un-site-en-exemple
git init
git submodule add https://github.com/theNewDynamic/gohugo-theme-ananke themes/ananke
cp -r themes/ananke/exampleSite/{config.toml,content/,static/} .
sed -i -e 's/\[\"github\.com\/theNewDynamic\/gohugo-theme-ananke\"\]/\x27ananke\x27/' config.toml
hugo server
~~~
La dernière commande, `hugo server`, lance un micro serveur web sur `http://localhost:1313`. Tout changement au projet est immédatement détecté et le rendu est mis à jour. Les principaux méta-éléments du site (URL, titre, langue, thème) sont lus par le serveur dans le fichier `config.toml`.
2022-12-07 15:46:23 +01:00
Si on est prêt à générer le site statique (au lieu de simplement le prévisualiser sur `http://localhost:1313`), il suffit de lancer la commande `hugo` sans aucun paramètre et les fichiers finaux (à téléverser sur le serveur de production) seront placés dans le dossier `public`.
2022-12-07 15:30:57 +01:00
## Structure d'un projet
L'exemple de site ci-haut aura cette arborescence :
~~~
un-site-en-exemple/
├── archetypes/
├── content/ # fichiers .md
├── data/ # listes, dictionnaires .yml
├── layouts/ # modèles .html avec syntaxe Hugo
├── public/ # fichier du site final
├── static/ # .css, .js, polices, images
├── themes/
│ └── ananke/
│ └── ... # arborescence semblable à celle d'un site
└── config.toml
~~~
2022-12-07 15:46:23 +01:00
## Modèles (*templates*)
2022-12-07 15:30:57 +01:00
La [documentation officielle](https://gohugo.io/templates/introduction/) permet de comprendre la syntaxe utilisée par Hugo pour manipuler des variables et des fonctions.
En plus des variables que l'on peut définir soi-même, il y en a plusieurs très pratiques qui font parties de Hugo comme `.Site.Author`, `.Site.BaseURL`, `.Site.Copyright` (site), `.Content`, `.Data`, `.Date`, `.Permalink`, `.TableOfContents` (page), etc.
## Fonctionalités avancées
2022-12-07 15:36:50 +01:00
Hugo est très riche en fonctionnalités de [gestion de contenus](https://gohugo.io/hugo-modules/) (pages, billets, taxonomies, sommaires, menus, diagrams, codes abrégés, multilinguisme) et est extensible grâce à un système de modules ([fonctionalités](https://gohugo.io/hugo-modules/), [thèmes](https://themes.gohugo.io/)), des [tuyaux (*pipes*)](https://gohugo.io/hugo-pipes/) pour le traitement de ressources, des outils de développement, etc.
2022-12-07 15:30:57 +01:00
Pour les adeptes de la ligne de commandes, Hugo est capable de [générer un script d'autocomplétion](https://gohugo.io/commands/) pour bash, zsh et autres interpréteurs.