Un generador de sitios estáticos ligero escrito en Python.
Características:
pip install --upgrade gnrt
Es posible que deba agregar $HOME/.local/bin a su $PATH .
gnrt
gnrt buscará un archivo config.yml opcional en el directorio de trabajo actual, plantillas Jinja2 opcionales en la carpeta templates , archivos de rebajas en la carpeta content y luego escribirá los archivos de salida generados en la carpeta public , respetando la carpeta content y los subdirectorios. estructura de carpetas.
Para obtener una lista de opciones, utilice:
gnrt -h
La configuración se almacena en config.yml . Se permite cualquier par clave-valor. Estas claves y sus valores se pueden utilizar en los archivos de contenido y de plantilla.
---
sitename: My awesome blog
baseurl: https://example.com
language: en
foo: bar
Si el archivo config.yml existe, gnrt buscará los defaults y lists las entradas.
Aquí es donde define los valores de configuración predeterminados, que se pueden anular en los archivos de contenido.
Ejemplo:
defaults:
template: default.j2
markdown-extras:
- break-on-newline
- fenced-code-blocks
nav: includes/nav.html
bar: foo
Estas claves tienen un significado específico y sus valores se pueden anular en los archivos de contenido, como cualquier otro default .
markdown-extras : permite habilitar extensiones de Markdown, consulte Extras para obtener una lista de valorestemplate : establece la plantilla Jinja predeterminada que se utilizará al representar archivos de contenidoAquí es donde se definen las listas de contenidos, permitiendo por ejemplo generar listas de enlaces.
Ejemplo:
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
Las listas pueden seleccionar contenido a través de un filter , que obtiene una key de metadatos y un value que debe coincidir.
Se pueden ordenar por valor de metadatos (por ejemplo, una fecha de publicación, un número entero, ...), en orden directo (predeterminado) o reverse .
Durante el renderizado, el contenido generado se guarda en la carpeta includes (para almacenamiento en caché), mientras que la ruta del archivo se puede personalizar a través de la clave target . Esto permite generar un feed RSS, por ejemplo.
Los archivos de contenido tienen la extensión .md y se almacenan en la carpeta content .
Los archivos de contenido pueden tener una portada, es decir, metadatos estructurados, escritos en YAML.
Aquí es donde se pueden anular los valores predeterminados.
Ejemplo:
---
id: home
title: Home
link: /
nav-order: 3
---
id : el identificador del elemento actual, que se puede utilizar en cualquier archivo de contenido para acceder a los metadatos de este elemento.link : URL de la página generadatarget : ruta del archivo generadotitle : título del elemento actual body del contenido está escrito en Markdown.
También puede contener sintaxis Jinja2 y marcadores de posición, lo que permite la inyección de valores dataset , como enlaces a otras páginas:
Check the [about]({{ data.about.link }}) page or read the [articles]({{ data.articles.link }})!
Consulte el sitio web de ejemplo en docs/example , que puede generar instalando gnrt , clonando este repositorio, moviéndose a gnrt/docs/example y ejecutando gnrt .
Luego puede explorarlo en http://localhost:8080/ moviéndose a la carpeta public generada y ejecutando python3 -m http.server 8080 .
Quizás también quieras consultar un blog en vivo generado por gnrt y leer este artículo sobre gnrt.