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/pdssgPour 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