Generieren Sie eine statische Site und Atom-Feeds mit Markdown, Shell und Pandoc.
git clone pdssg, idealerweise neben dem Quellverzeichnis Ihrer Website.
git clone https://github.com/torresjrjr/pdssg
Um pdssg auszuführen und eine statische Site zu erstellen, führen Sie das pdssg-Skript in einem Verzeichnis über dem Quellverzeichnis der Site aus.
$ ls
src/ pdssg/
$ ./pdssg/pdssg
pdssg ist ein einzelnes ausführbares Shell-Skript ohne Befehlszeilenflags. Es generiert einfach ein benachbartes Site-Verzeichnis dst/
(Ziel) aus einem vorhandenen, benachbarten Verzeichnis src/
(Quelle) mit den Inhalten der Site (Markdown-Dateien, die in HTML-Webseiten konvertiert werden sollen, und andere Dateien).
Das Design von pdssg ist modular und baumbasiert. Hier ist ein Beispiel für ein Site- Quellverzeichnis.
src/
|-- _ignore
|-- _feeds
|-- index.md
|-- about.md
|-- posts.md
|-- posts/
| |-- _drafts/
| | `--- 2020-04-01-bored.md
| |-- 2020-01-01-new-year.md
| |-- 2020-02-01-corona-what.md
| `-- 2020-03-01-stuck-at-home.md
|-- feeds/
| `-- posts.md
|-- assets/
| `-- style.css
|-- _templates/
| |-- atom.xml
| `-- main.html
`-- _includes/
|-- header.html
|-- footer.html
`-- meta.html
Hier ist das resultierende Build-Verzeichnis.
dst/
|-- index.html
|-- about.html
|-- posts.html
|-- posts/
| |--- 2020-01-01-new-year.html
| |--- 2020-02-01-corona-what.html
| `--- 2020-03-01-stuck-at-home.html
|-- feeds/
| `--- posts.html
`-- assets/
`--- style.css
Hinweis: Dateien und Verzeichnisse, die mit einem Unterstrich _
beginnen, werden verworfen.
Markdown-Dateien werden in HTML-Dateien konvertiert und stehen als Webseiten zur Verfügung. Die Ausnahmen sind Dateipfade, die mit Mustern in einer ./_ignore
, wie einer .gitignore
Datei, übereinstimmen.
pdssg erwartet, dass Markdown-Dateien einen YAML-Frontmatter-Block haben, bei dem es sich um einen Block mit YAML-Metadaten handelt, der von einem Paar ---
umgeben ist und dem Rest des Dateiinhalts vorausgeht.
Das Frontmatter sollte mindestens einen title
haben, der zur Erstellung einer <h1>
-Titelüberschrift verwendet wird. author
und date
sind üblich und werden gegebenenfalls empfohlen.
Beispiel einer Markdown-Datei:
---
title : My Webpage Title
author : John Smith
date : 2020-12-30
---
## Subheading
contents...
Wie im Beispiel werden die Verzeichnisse _includes
und _templates
zum Generieren der HTML- und Atom-Dateien verwendet. Anschließend werden sie verworfen.
Für die Dateien in _templates
:
atom.xml
wird zum Erstellen von HTML-Dokumenten verwendet.main.html
wird zum Erstellen von Atom-Feeds verwendet. Für die Dateien in _includes
:
meta.html
wird in den Dokumentkopf innerhalb der <meta>
-Tags eingefügt.header.html
wird in den Textkörper innerhalb der <body>
-Tags vor dem Hauptinhalt eingefügt.footer.html
wird in den Textkörper innerhalb der <body>
-Tags nach dem Hauptinhalt eingefügt.Atom-Feeds sind RSS-ähnliche Feeds, die auf einem neueren, robusteren Syndication-Format basieren. Sie werden im Wesentlichen wie RSS verwendet und auch als solche bezeichnet. Mit Atom-Feeds können Leser die neuen Inhalte einer Website, beispielsweise eines Blogs, abonnieren.
pdssg kann Atom-Feeds aus Verzeichnissen erstellen, wobei die Dateien des Verzeichnisses als Feed-Einträge dienen. Dazu müssen Sie ein bestimmtes Verzeichnis für Ihre Feeds erstellen und eine „Atom-Seed-Datei“ als solche erstellen:
./feeds/
) und schreiben Sie seinen Pfad in die Konfigurationsdatei _feeds
./posts/
)../feeds/posts/
)..md
an den Pfad an (z. B. ./feeds/posts.md
). Eine Demonstration finden Sie auf der obigen Beispielseite (das posts/
-Verzeichnis).
Die Atom-Seed-Datei wird in eine Atom-Feed-Datei konvertiert. Dieser resultierende Feed wird im neuen Pfad vorhanden sein, jedoch mit der Erweiterung .xml
anstelle von .md
. In diesem Beispiel wird der Atom-Feed unter example.com/feeds/posts.xml
angezeigt. Beachten Sie, dass die Datei ./posts.md
nicht für einen Feed erforderlich ist, sondern nur für ein Verzeichnis.
HINWEIS: Atom-Einträge werden alphanumerisch nach ihren entsprechenden Dateinamen sortiert, nicht nach ihrem durch ihre YAML-Frontmatter angegebenen date
.
Dieses Projekt entstand aus einer persönlichen Herausforderung für meine eigene Website. Auf Wunsch eines befreundeten Bloggers habe ich es aufgeräumt und veröffentlicht.
Kontaktieren Sie mich: t.me/torresjrjr