Générez un site statique et des flux Atom, avec Markdown, Shell et Pandoc.
git clone pdssg, idéalement à côté du répertoire source de votre site.
git clone https://github.com/torresjrjr/pdssg
Pour exécuter pdssg et créer un site statique, exécutez le script pdssg dans un répertoire au-dessus du répertoire source du site.
$ ls
src/ pdssg/
$ ./pdssg/pdssg
pdssg est un script shell exécutable unique, sans indicateur de ligne de commande. Il génère simplement un répertoire de site voisin dst/
(destination) à partir d'un répertoire voisin existant src/
(source) avec le contenu du site (fichiers Markdown à convertir en pages Web HTML et autres fichiers).
La conception de pdssg est modulaire et arborescente. Voici un exemple de répertoire source du site .
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
Voici le répertoire de construction résultant.
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
Remarque : les fichiers et répertoires commençant par un trait de soulignement _
seront supprimés.
Les fichiers Markdown seront convertis en fichiers HTML, prêts sous forme de pages Web. Les exceptions sont les chemins de fichiers correspondant à des modèles dans un fichier ./_ignore
, comme un fichier .gitignore
.
pdssg s'attend à ce que les fichiers Markdown aient un bloc de frontmatter YAML, qui est un bloc de métadonnées YAML entouré d'une paire de ---
, précédant le reste du contenu du fichier.
Le frontmatter doit au moins avoir une valeur title
, qui sera utilisée pour créer un titre de titre <h1>
. les valeurs author
et date
sont courantes et recommandées le cas échéant.
Exemple de fichier Markdown :
---
title : My Webpage Title
author : John Smith
date : 2020-12-30
---
## Subheading
contents...
Comme dans l'exemple, les répertoires _includes
et _templates
seront utilisés pour générer les fichiers HTML et Atom. Ils sont ensuite rejetés.
Pour les fichiers dans _templates
:
atom.xml
est utilisé pour créer des documents HTML.main.html
est utilisé pour créer des flux Atom. Pour les fichiers dans _includes
:
meta.html
est inséré dans l'en-tête du document dans les balises <meta>
.header.html
est inséré dans le corps entre les balises <body>
, avant le contenu principal.footer.html
est inséré dans le corps entre les balises <body>
, après le contenu principal.Les flux Atom sont des flux de type RSS basés sur un format de syndication plus récent et plus robuste. Ils sont essentiellement utilisés comme RSS et désignés comme tels. Les flux Atom permettent aux lecteurs de s'abonner au nouveau contenu d'un site Web, comme un blog.
pdssg peut créer des flux Atom à partir de répertoires, avec les fichiers du répertoire comme entrées de flux. Pour ce faire, vous devez créer un répertoire spécifié pour vos flux, et créer un "fichier de départ Atom" en tant que tel :
./feeds/
) et écrivez son chemin dans le fichier de configuration _feeds
./posts/
)../feeds/posts/
)..md
au chemin (par exemple ./feeds/posts.md
). Reportez-vous à l' exemple de site ci-dessus pour une démonstration (le répertoire posts/
).
Le fichier de départ Atom sera converti en fichier de flux Atom. Le flux résultant existera au niveau du nouveau chemin mais avec une extension .xml
au lieu de .md
. Dans cet exemple, le flux atomique apparaîtra sur example.com/feeds/posts.xml
. Notez que le fichier ./posts.md
n'est pas nécessaire pour un flux, seulement un répertoire.
REMARQUE : les entrées Atom sont classées par ordre alphanumérique par leurs noms de fichiers correspondants, et non par leur date
spécifiée par leur frontmatter YAML.
Ce projet est né d'un défi personnel, pour mon propre site. À la demande d'un sympathique blogueur, je l'ai nettoyé et rendu public.
Contactez-moi : t.me/torresjrjr