Un générateur de site statique léger écrit en Python.
Caractéristiques:
pip install --upgrade gnrt
Vous devrez peut-être ajouter $HOME/.local/bin
à votre $PATH
.
gnrt
gnrt
recherchera un fichier config.yml
facultatif dans le répertoire de travail actuel, des modèles Jinja2 facultatifs dans le dossier templates
, des fichiers de démarque dans le dossier content
, puis écrira les fichiers de sortie générés dans le dossier public
, tout en respectant le dossier content
et les sous-dossiers. structure des dossiers.
Pour obtenir une liste d'options, utilisez :
gnrt -h
La configuration est stockée dans config.yml
. Toute paire clé-valeur est autorisée. Ces clés et leurs valeurs peuvent être utilisées dans les fichiers de contenu et de modèle.
---
sitename: My awesome blog
baseurl: https://example.com
language: en
foo: bar
Si le fichier config.yml
existe, gnrt
recherchera les defaults
et lists
les entrées.
C'est ici que vous définissez les valeurs de configuration par défaut, qui peuvent être remplacées dans les fichiers de contenu.
Exemple:
defaults:
template: default.j2
markdown-extras:
- break-on-newline
- fenced-code-blocks
nav: includes/nav.html
bar: foo
Ces clés ont une signification spécifique et leurs valeurs peuvent être remplacées dans les fichiers de contenu, comme n'importe quel autre default
.
markdown-extras
: permet d'activer les extensions Markdown, voir Extras pour une liste de valeurstemplate
: définit le modèle Jinja par défaut à utiliser lors du rendu des fichiers de contenuC'est ici que sont définies les listes de contenus, permettant par exemple de générer des listes de liens.
Exemple:
lists:
nav1:
filter:
key: category
value: page
template: nav-page.j2
nav2:
filter:
key: category
value: article
sort: published
reverse: true
template: nav-article.j2
rss:
filter:
key: category
value: article
sort: published
reverse: true
template: rss.j2
target: public/rss.xml
Les listes peuvent sélectionner du contenu via un filter
, qui obtient une key
de métadonnées et une value
correspondante.
Ils peuvent être triés par valeur de métadonnées (par exemple une date de publication, un entier, ...), dans l'ordre direct (par défaut) ou reverse
.
Lors du rendu, le contenu généré est enregistré dans le dossier includes
(pour la mise en cache), tandis que le chemin du fichier peut être personnalisé via la clé target
. Cela permet de générer un flux RSS par exemple.
Les fichiers de contenu portent l'extension .md
et sont stockés dans le dossier content
.
Les fichiers de contenu peuvent avoir un frontmatter – c'est-à-dire des métadonnées structurées – écrit en YAML.
C'est ici que les valeurs par défaut peuvent être remplacées.
Exemple:
---
id: home
title: Home
link: /
nav-order: 3
---
id
: l'identifiant de l'élément actuel, qui peut être utilisé dans n'importe quel fichier de contenu pour accéder aux métadonnées de cet élémentlink
: URL de la page généréetarget
: chemin du fichier générétitle
: titre de l'élément courant body
du contenu est écrit en Markdown.
Il peut également contenir de la syntaxe Jinja2 et des espaces réservés, permettant l'injection de valeurs dataset
, telles que des liens vers d'autres pages :
Check the [about]({{ data.about.link }}) page or read the [articles]({{ data.articles.link }})!
Consultez l'exemple de site Web dans docs/example
, que vous pouvez générer en installant gnrt
, en clonant ce référentiel, en le déplaçant vers gnrt/docs/example
et en exécutant gnrt
.
Vous pouvez ensuite le parcourir sur http://localhost:8080/
en vous déplaçant vers le dossier public
généré et en exécutant python3 -m http.server 8080
.
Vous pouvez également consulter un blog en direct généré par gnrt et lire cet article sur gnrt.