hugo mod init example.com/docs
npm install
hugo mod get github.com/projectious-work/brand-theme-hugo-vanilla@v0.3.3
Copiez les blocs [outputFormats], [outputs] et [markup] depuis la
configuration d’exemple. Créez content/docs/_index.md et une première page, puis
lancez hugo server --disableFastRender.
URL, module, langues, menus, sorties et paramètres
go.mod
Version du thème comme module Hugo
package.json
Tailwind et tests navigateur
data/cdn.yaml
Versions exactes de KaTeX, Mermaid et asciinema
i18n/*.toml
Libellés d’interface traduits
Front matter
Titre, ordre et options de chaque page
src/content/hugo.toml constitue l’exemple complet. SearchIndex produit
/index.json, Print une section imprimable, Markdown les actions de copie,
LLMS le fichier /llms.txt, et RSS les flux de notes de version.
Les paramètres du thème vont sous [params]; le front matter contient notamment
title, description, weight, icon, toc, cards, math et private.
robots.txt exclut les vues de recherche et d’impression dupliquées. Le sitemap
publie les variantes linguistiques. llms.txt, distinct de robots.txt, liste les
pages canoniques et leurs sorties Markdown pour faciliter leur découverte par les
outils. Ce n’est pas un mécanisme de contrôle d’accès.
Validez toute modification avec ./scripts/verify.sh.
Documentation versionnée
Publier des builds distincts et les relier par le menu de versions.
Chaque version est un build Hugo distinct. Publiez la version courante à la racine
stable et les anciennes sous /v0.2/, par exemple. N’ajoutez à params.versions
que des URL déjà publiées. probe = false renvoie vers la racine d’une version
dont la structure diffère.
Page d’administration
Membres, rôles, états et tableau de données adaptatif.
Configuration de page (front matter)
Contrôler la navigation et les fonctions propres à une page.
Le front matter est le bloc TOML placé entre +++ au début du fichier Markdown.
toml
+++title="Référence API"# Titre obligatoire.linkTitle="API"# Libellé court de navigation.description="API HTTP."# Résumé et extrait de recherche.weight=20# Ordre dans la navigation.icon="code"# Icône de la carte générée.toc=true# Afficher la navigation des titres.cards=true# Générer les cartes des pages enfants.hidden=false# Inclure cette page dans les cartes.math=false# Charger KaTeX sur cette page.private=false# Inclure la page dans recherche et sitemap.+++
Guide de création de templates
Créer des layouts et shortcodes Hugo maintenables avec les jetons du thème et Tailwind.
Conservez les adaptations dans le site consommateur: Hugo donne priorité aux
layouts locaux sur ceux du module. Choisissez le plus petit point d’extension:
shortcode pour un composant de contenu, partial pour du markup réutilisable ou
layout de section pour une structure différente.
Activez [build.buildStats] enable = true dans hugo.toml.
Installez @tailwindcss/cli et versionnez le fichier de verrouillage.
Créez par exemple layouts/shortcodes/status-panel.html.
Employez des classes littérales comme bg-surface, text-hi,
border-default, rounded-lg et p-6; Tailwind ne découvre pas fiablement
les classes construites dynamiquement.
Préférez les variables sémantiques telles que --color-surface, --space-5
et --radius-lg.
Ajoutez les SVG Tabler dans assets/icons/ avec un nom accessible lorsque
l’icône transmet une information.
Testez production, modes de couleur, texte à 200 %, clavier, mobile,
impression et toutes les langues.
Comparez chaque override local au nouveau template upstream lors des mises à
jour.
Jetons CSS sémantiques et espaces de noms Tailwind générés depuis le thème.
Les tableaux sont générés directement depuis le CSS pendant la compilation Hugo.
Les modèles du site doivent utiliser les jetons sémantiques et les espaces de noms
Tailwind documentés, et non les sélecteurs ou échelons internes.
Tableau de bord
Métriques, tendances d’activité et état des pipelines.
Enregistrements de terminal
Intégrer des sessions copiables avec asciinema.
asciinema enregistre le texte et le minutage plutôt
qu’une vidéo. Placez le fichier .cast dans le bundle ou sous static/casts/.
Formulaires, validation, interrupteurs et actions d’enregistrement.
Tailwind et jetons de design
Employer l'intégration Tailwind et les jetons projectious.work.
Les auteurs Markdown n’ont pas besoin de Tailwind. Les développeurs de templates
peuvent utiliser font-display, font-sans, font-mono, bg-page, bg-surface,
bg-subtle, bg-terminal, text-hi, text-lo, text-accent,
border-default et border-accent. build.buildStats.enable = true est requis.
Tous les jetons CSS figurent dans assets/css/brand-tokens.css, fondé sur le
système de design projectious.work.
Tarifs
Trois offres lisibles avec une recommandation mise en avant.
État d’exécution
États vide, en cours, réussi et en erreur pour l’observabilité.
Tags
Taxonomies Hugo pour les métadonnées et les contenus associés.
Ajoutez tags = ["release", "accessibilité"] au front matter. Le thème affiche
les tags dans les métadonnées, les indexe et génère les pages de taxonomie. Le site
d’exemple ne place volontairement pas Tags dans la navigation principale.
Article
Un article long avec métadonnées et repères de lecture.
Guide développeur
Adapter le thème, remplacer les ressources et tester les changements.
Un site consommateur surcharge un gabarit dans son propre dossier layouts/ au
lieu de modifier le cache du module. Les variables de brand-tokens.css forment la
surface de personnalisation stable.
La liste complète et les sources se trouvent dans
src/assets/icons/.
Elle comprend notamment accessible, book, brand-github, file, folder,
language, menu-2, printer, search, tag et versions.
Inspectez les images de différence avant de mettre à jour une référence visuelle.
Les contributions passent par une branche courte, un commit conventionnel et une
pull request.
Recherche
Index généré, recherche d'en-tête et palette de commandes.
Hugo génère /index.json avec titres, descriptions, tags, contenu et titres H2/H3.
FlexSearch fonctionne localement dans le navigateur. / place le curseur dans la
recherche; Ctrl/Cmd+K ouvre la palette. Activez SearchIndex dans
outputs.home; params.search = false désactive la fonction.
Journal des modifications
Historique chronologique avec libellés de changement sémantiques.
Maintenance et mises à niveau
Maintenir thème, dépendances, traductions et versions publiées.
Avant une mise à niveau, lisez les notes de version, mettez à jour le module avec
hugo mod get ...@vX.Y.Z, comparez les surcharges locales et exécutez
./scripts/verify.sh avec la baseURL de production.
Vérifiez régulièrement les avis npm, liens externes, traductions, versions CDN,
accessibilité et URL de versions. La publication de ce dépôt utilise localement
./scripts/release.sh vX.Y.Z.
Mathématiques
Afficher des formules KaTeX en ligne et en bloc.
Ajoutez math = true au front matter. Utilisez \\( ... \\) en ligne et $$
autour d’une formule en bloc.
Outils de build, bibliothèques navigateur, versions et licences.
Composant
Version
Usage
Hugo
0.128.0 minimum; testé 0.164.0
build
Go
1.22
modules
Tailwind CLI
4.3.3
CSS
Playwright
1.62.1
tests navigateur
Tabler Icons
3.31.0
catalogue complet d’icônes
IBM Plex Mono
5.3.0
fontes intégrées pour le code
FlexSearch
0.8.143
recherche locale
KaTeX
0.18.4
mathématiques
Mermaid
11.16.1
diagrammes
asciinema-player
3.17.0
terminal
nbconvert
7.16.6
conversion optionnelle
Les dépendances npm exactes sont dans package-lock.json, les versions navigateur
dans data/cdn.yaml et les versions Python dans scripts/requirements.txt.
IBM Plex Mono comprend les fontes droites et italiques de graisses 400, 500,
600 et 700. La coloration syntaxique utilise donc de vraies fontes plutôt que
des variantes synthétisées par le navigateur.
Jupyter notebooks
Publier les résultats de notebooks convertis de façon reproductible.
Jupyter associe texte, code et résultats. Le thème
convertit les fichiers .ipynb en Markdown avant le build Hugo.
Cet aperçu représente le Markdown produit par le flux nbconvert dont la
version est verrouillée. Un notebook réel peut réunir explications, entrées
mises en évidence et sorties tabulaires.
Le shortcode intègre un résultat converti; il n’exécute aucun code.
Internationalisation
Configurer contenus traduits, navigation, métadonnées et RTL.
Déclarez chaque langue sous [languages.<code>] avec label et weight, puis
placez le contenu dans son répertoire. Recherche, liens d’édition, RSS, sitemap,
hreflang et llms.txt respectent la langue. Traduisez l’interface dans
i18n/<lang>.toml; languagedirection = "rtl" inverse la structure.
En-tête et navigation
Configurer liens principaux, recherche, langues, versions et icônes.
menus.main définit les liens principaux. Préférez pageRef pour une page locale
et url pour une destination externe. params.github ajoute l’icône GitHub.
Pour un autre service, ajoutez un SVG dans assets/icons/ et un lien .iconbtn
avec un aria-label dans partials/header.html.
Lors de la première visite, tous les groupes sont fermés. Sous [params],
sidebarOpenDepth définit le nombre de niveaux initialement ouverts : 0 est la
valeur par défaut et 1 ouvre le premier niveau. Tout ouvrir et Tout
fermer modifient l’arbre entier. Les choix individuels sont conservés dans le
stockage local du navigateur, par site et par langue, et survivent aux changements
de page. Le filtre n’ouvre les groupes correspondants que temporairement.
Modification et retours
Relier les pages à leurs sources et recueillir éventuellement l'avis des lecteurs.
params.editURL désigne le dossier contenant les sources Markdown; le thème y
ajoute le chemin relatif de la page. Une table default, de, fr convient aux
racines de contenu séparées.
params.feedbackEndpoint est facultatif. Le navigateur envoie chemin, vote, titre
et langue. Sa limitation locale améliore seulement l’interface: le serveur doit
valider origine et champs, limiter la taille et appliquer sa propre limitation de
débit.
Diagrammes et graphiques
Créer des diagrammes responsives, des graphiques issus de données et des figures vectorielles ou bitmap soignées.
Le thème propose trois parcours idiomatiques Hugo : Mermaid directement dans
Markdown, le shortcode chart pour les données CSV et graphic pour les sorties
SVG ou bitmap de D2, Graphviz, Typst/CeTZ et d’autres générateurs.
chart produit un SVG accessible pendant la compilation Hugo, sans JavaScript
dans le navigateur.
Un histogramme généré depuis un fichier CSV.
md
{{< chart src="data/graphics-adoption.csv" type="bar"
title="Projets utilisant des graphiques générés" >}}
La première ligne du CSV est l’en-tête. La première colonne contient les
libellés et la seconde des valeurs numériques positives. type accepte bar,
line et dot.
D2 convient à l’architecture, Graphviz aux graphes et Typst/CeTZ aux figures
techniques précises. Ces outils produisent du SVG ; graphic assure ensuite une
présentation homogène et accessible.
Les formats spécialisés convergent vers un SVG responsive.
md
{{< graphic src="system.svg" alt="Architecture du traitement des requêtes"
caption="Architecture du système" source="system.d2" backend="d2" >}}
Le SVG externe via <img> est le choix sûr par défaut. Un SVG de confiance dans
assets/ ou un page bundle peut être intégré avec inline="true". Le même
shortcode accepte PNG, WebP et JPEG pour les captures d’écran, photographies et
illustrations riches en pixels.
md
{{< graphic src="diagram.svg" inline="true" alt="Flux de données" >}}
{{< graphic src="capture.webp" alt="Application sur ordinateur"
caption="Vue sur ordinateur" >}}
Toujours fournir un texte alternatif utile et, si nécessaire, une légende. La
couleur ne doit jamais être le seul moyen de transmettre une information.
Blocs de code
Configurer la coloration, les noms de fichier, les numéros et les lignes mises en évidence.
Le thème confie les blocs de code Markdown au moteur Chroma de Hugo. Il ajoute un
en-tête indiquant le langage ou le nom de fichier ainsi qu’un bouton de copie.
Les attributs d’un bloc remplacent ces valeurs. noClasses = false permet au
thème d’adapter les couleurs aux modes clair et sombre. La
référence Hugo
présente toutes les options Chroma.
Accessibilité
Clavier, préférences de lecture et responsabilités des auteurs.
Le thème fournit un lien d’évitement, un focus visible, des zones sémantiques, un
texte redimensionnable, une réduction des animations et des contrôles contrastés.
Le menu mémorise la taille du texte, le contraste, un anneau de focus renforcé de
trois pixels, le soulignement des liens, les mouvements réduits et l’espacement.
Les auteurs doivent fournir des alternatives d’image et respecter la hiérarchie des
titres.
Arborescences de fichiers
Expliquer une structure de projet avec dossiers et fichiers imbriqués.
La bibliothèque Tabler fournit la liste complète.
label donne une alternative textuelle aux icônes porteuses de sens.
Images
Publier figures, légendes, variantes sombres et visionneuses.
Une illustration aux couleurs de la marque
md
{{< image src="/img/sunrise-brand.svg"
alt="Lever de soleil sur les montagnes" caption="Couleurs de marque" >}}
Préférez un page bundle. src-dark définit une variante sombre. Les images
Markdown ordinaires utilisent également la figure et la visionneuse.
Liens
Créer des liens sûrs pour le chemin de base entre pages Hugo.
md
[Configuration](../configuration/_index.md)
[Formats de sortie](../configuration/site-wide.md#formats-de-sortie)
[Section de cette page](#liens)
Une référence de contenu invalide fait échouer le build après le déplacement de
sa cible. Les liens externes reçoivent des attributs sûrs et une icône.
Onglets
Regrouper des alternatives équivalentes accessibles au clavier.