04. Hugo
Ce chapitre ne contiendra pas à proprement parlé des documentations, mais sera plus un pense-bête sur l’utilisation du logiciel Hugo, utilisé pour réaliser ce site de documentations.
Ce chapitre ne contiendra pas à proprement parlé des documentations, mais sera plus un pense-bête sur l’utilisation du logiciel Hugo, utilisé pour réaliser ce site de documentations.
L’installation du logiciel Hugo
peut être réalisée en suivant le guide Démarrage rapide.
Le plus simple pour installer Hugo
est d’utiliser le gestionnaire de paquets de votre distribution (apt
pour Debian, pacman
pour Arch…).
Pour debian :
apt install hugo
Pour Arch Linux :
pacman -S hugo
Toutes les commandes du logiciel Hugo
commencent par hugo
, exemple pour avoir de l’aide :
hugo help
Pour créer votre site de documentations, il faudra utiliser la commande :
hugo new site quickstart # remplacer quickstart par le nom de votre site
Dans la suite de ce pense-bête, j’utiliserai comme nom de site quickstart
.
On se place dans le répertoire quickstart
:
cd quickstart
Pour ajouter des contenus de type chapitre (chapter
) ou page, nous utiliserons les commandes suivantes :
Ajout d’un nouveau chapitre qui contiendra une ou plusieurs pages de documentations :
hugo new --kind chapter 01-premiere_doc/_index.md
Modifier le fichier content/01-premiere_doc/_index.md
pour que dans l’arborescence du menu, ce chapitre soit affiché en premier :
+++
archetype = "chapter"
title = "01 Premiere Doc"
weight = 1
+++
C’est l’option weight
à 1
qui placera ce chapitre en premier dans le menu
Vous pouvez changer le titre en modifiant l’option title
, celui-ci sera affiché dans le menu à gauche de votre futur site.
Pour ajouter une page dans le chapitre précédement créé, utilisez la commande :
hugo new 01-premiere_doc/01-installation.md
Voici quelques paramètres de configuration, ceux-ci sont à placer dans le fichier hugo.toml
dans le répertoire quickstart
.
A minima, votre fichier hugo.toml
devra contenir ces quatre lignes :
# URL de base
baseURL = 'https://docs.example.com'
# Le language à utiliser par défaut
languageCode = 'fr'
# Le titre de votre site
title = 'My Docs'
# Le thème utilisé - dans mon cas Relearn
theme = 'hugo-theme-relearn'
Par défaut, le site est créé pour être multilangues, si ce n’est pas le cas ajouter ces options :
# Désactivation de l'option multilangues
IsMultiLingual = 'false'
# On définit le language par défaut des contenus
DefaultContentLanguage = 'fr'
# On désactive le language par défaut des sous-répertoires
DefaultContentLanguageInSubdir = 'false'
Vous pouvez définir des paramètres généraux tels que ceux ci-dessous. Ces paramètres pouront être utilisés dans les différents contenus.
[params]
# Nom de l'auteur des contenus
author.name = 'John Doe'
# On désactive le changement de languages
disableLanguageSwitchingButton = 'true'
# Le titre global de notre site
globalTitle = "My docs"
# L'état initial de développement des sous-menus.
alwaysopen = ''
# Carractère affiché devant chaque nom de chapitre
breadcrumbSeparator = '>'
# Menu rétractable
collapsibleMenu = true
# Désactivation du menu Home affiché sous la barre de recherche
disableLandingPageButton = true
# Désactivation des boutons suivant et précédent
disableNextPrev = false
# Options selon le thème - ici pour Relearn on affiche la possibilité de passer du mode sombre
# au mode clair, le mode sombre étant celui par défaut (premère valeur)
themeVariant = [ "relearn-dark", "relearn-light" ]
# D'autres paramètres qui affectent l'affichage des images
[params.imageEffects]
border = false
lazy = true
lightbox = true
shadow = false
Pour activer la recherche et afficher le bouton d’impression, veuillez ajouter ces paramètres :
# Activate search
[outputs]
home = ['html', 'rss', 'print', 'search']
page = ['html', 'rss', 'print']
section = ['html', 'rss', 'print']
Pour ce thème, j’ai personnalisé une seule chose, j’ai supprimé le logo du thème et renseigné le titre du site.
Cela se fait en éditant le fichier themes/hugo-theme-relearn/layouts/partials/logo.html
et en remplaçant le chapitre en fin de page :
<a id="R-logo" href="{{ partial "relLangPrettyUglyURL.hugo" (dict "to" .Site.Home) }}">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64.044 64.044">
[...]
</svg>Relearn
</a>
par :
<a id="R-logo" href="{{ partial "relLangPrettyUglyURL.hugo" (dict "to" .Site.Home) }}">My Docs</a>
Pour générer une version html du site, prête à être publiée sur votre serveur web, utilisez la commande ci-dessous, toujours en étant dans le répertoire quickstart
:
hugo
Ensuite il faudra copier le contenu du répertoire public
qui contient une copie html
de votre futur site.
Vous pouvez pour cela utiliser la commande rsync
Voici un exemple, très simplifié d’un script qui pourrait s’occuper de générer la version html de votre site et de la synchroniser dans le répertoire contenant votre site web qui sera affiché à l’aide de Apache ou de Nginx.
#!/bin/bash
rsync -avz --delete ~/quickstart/public/ /var/www/mydocs/
chown -R www-data: /var/www/mydocs/
~/quickstart/public/
: répertoire ~/quickstart
contenant le répertoire public
où se trouve la version html de votre site, après avoir exécuté la commande hugo
./var/www/mydocs/
: répertoire (apache ou nginx) contenant votre site web de documentationswww-data
: utlisateur apache ou nginxCes variables sont à adapter selon votre configuration.
Voici un fichier minimaliste pour la configuration de ce nouveau serveur web :
Je ne décris pas l’utilisation d’un certificat ssl pour chiffrer les échanges.
Vous pouvez consulter cette adresse pour sa mise en place : https://www.it-connect.fr/nginx-ajouter-un-certificat-ssl-lets-encrypt-pour-passer-en-https/
server {
listen 80;
server_name docs.example.com;
root /var/www/mydocs;
index index.html;
access_log /var/log/nginx/mydocs-access.log main;
error_log /var/log/nginx/mydocs-error.err;
port_in_redirect off;
location / {
add_header Cache-Control "public, max-age=3600";
}
location ~ \.(jpg|jpeg|gif|png)$ {
add_header Cache-Control "public, s-maxage=7776000, max-age=86400";
}
location ~ \.(css|js)$ {
add_header Cache-Control "public, max-age=31536000";
}
location /assets/fonts/ {
add_header Cache-Control "public, s-maxage=7776000, max-age=86400";
}
error_page 404 /404.html;
}