Ein leichter, in Python geschriebener statischer Site-Generator.
Merkmale:
pip install --upgrade gnrt
Möglicherweise müssen Sie $HOME/.local/bin
zu Ihrem $PATH
hinzufügen.
gnrt
gnrt
sucht nach einer optionalen config.yml
Datei im aktuellen Arbeitsverzeichnis, optionalen Jinja2-Vorlagen im templates
, Markdown-Dateien im content
und schreibt dann die generierten Ausgabedateien in den public
Ordner, wobei der content
und die Unterordner berücksichtigt werden. Ordnerstruktur.
Um eine Liste der Optionen zu erhalten, verwenden Sie:
gnrt -h
Die Konfiguration wird in config.yml
gespeichert. Jedes Schlüssel-Wert-Paar ist zulässig. Diese Schlüssel und ihre Werte können in den Inhalts- und Vorlagendateien verwendet werden.
---
sitename: My awesome blog
baseurl: https://example.com
language: en
foo: bar
Wenn die Datei config.yml
vorhanden ist, sucht gnrt
nach den defaults
und lists
Einträge auf.
Hier definieren Sie Standardkonfigurationswerte, die in Inhaltsdateien überschrieben werden können.
Beispiel:
defaults:
template: default.j2
markdown-extras:
- break-on-newline
- fenced-code-blocks
nav: includes/nav.html
bar: foo
Diese Schlüssel haben eine bestimmte Bedeutung und ihre Werte können wie alle anderen default
in Inhaltsdateien überschrieben werden.
markdown-extras
: Ermöglicht die Aktivierung von Markdown-Erweiterungen. Eine Liste der Werte finden Sie unter Extrastemplate
: Legt die Standard-Jinja-Vorlage fest, die beim Rendern von Inhaltsdateien verwendet werden sollHier werden Inhaltslisten definiert, die beispielsweise die Generierung von Linklisten ermöglichen.
Beispiel:
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
Listen können Inhalte über einen filter
auswählen, der einen key
und einen passenden value
erhält.
Sie können nach Metadatenwert (z. B. einem Veröffentlichungsdatum, einer Ganzzahl, ...) in vorwärts (Standard) oder reverse
Reihenfolge sortiert werden.
Beim Rendern wird der generierte Inhalt im includes
-Ordner gespeichert (zum Zwischenspeichern), während der Dateipfad über den target
angepasst werden kann. Dies ermöglicht beispielsweise die Generierung eines RSS-Feeds.
Inhaltsdateien haben die Erweiterung .md
und werden im content
gespeichert.
Inhaltsdateien können einen in YAML geschriebenen Inhalt haben, d. h. strukturierte Metadaten.
Hier können Standardwerte überschrieben werden.
Beispiel:
---
id: home
title: Home
link: /
nav-order: 3
---
id
: die aktuelle Elementkennung, die in jeder Inhaltsdatei verwendet werden kann, um auf die Metadaten dieses Elements zuzugreifenlink
: URL der generierten Seitetarget
: Pfad der generierten Dateititle
: Titel des aktuellen Elements Der body
wird in Markdown geschrieben.
Es kann auch Jinja2-Syntax und Platzhalter enthalten, die das Einfügen von dataset
ermöglichen, beispielsweise Links zu anderen Seiten:
Check the [about]({{ data.about.link }}) page or read the [articles]({{ data.articles.link }})!
Sehen Sie sich die Beispielwebsite in docs/example
an, die Sie generieren können, indem Sie gnrt
installieren, dieses Repository klonen, zu gnrt/docs/example
wechseln und gnrt
ausführen.
Sie können es dann unter http://localhost:8080/
durchsuchen, indem Sie in den generierten public
Ordner wechseln und python3 -m http.server 8080
ausführen.
Vielleicht möchten Sie auch einen von GnRT erstellten Live-Blog ansehen und diesen Artikel über Gnrt lesen.