StaPy

Simple real-time static site generator

StaPy est un générateur de site statique en temps réel développé avec Python 3. Le code est un fichier d'environ 200 lignes à modifier librement.

Code source

Compatibilité

Compatible à partir de la version 3.4 de Python, sur n'importe quel système d'exploitation.

Thèmes

Thèmes minimalistes générés avec StaPy :

Installation

Ajoutez le dossier du projet où vous le souhaitez et téléchargez la dernière version de StaPy depuis le dépôt Git.

mkdir stapy
cd stapy
wget https://codeberg.org/magentix/stapy/archive/last.tar.gz
tar zxvf last.tar.gz --strip 1
rm last.tar.gz

Site

Les fichiers statiques sont générés dans le dossier web. Il contient toutes les pages et fichiers que vous devez déployer (html, css, js, images...).

Serveur HTTP

Démarrez le serveur autonome :

python3 server.py

Accédez ensuite à http://localhost:1985

Route

Lorsqu'une page est consultée dans le navigateur, le serveur recherche un fichier json dans le dossier build/json. Le nom du fichier json doit être le même que le chemin de l'URL. Exemples :

/                 : index.html.json
/hello.html       : hello.html.json
/hello/world.html : hello/world.html.json
/hello/world/     : hello/world/index.html.json

Si le fichier json n'existe pas, une erreur 404 est envoyée.

Configuration

Le fichier json contient toutes les données nécessaires à la génération de la page :

{
  "title": "Page title",
  "description": "Page description",
  "template": "build/template/default.html",
  "content": "build/page/index.html"
}

Les clés template et content sont nécessaires.

Un fichier nommé default.json dans le dossier build/json est utilisé pour la configuration par défaut. Il sera mergé avec le fichier json de la page. Le fichier est trés pratique pour appliquer une configuration commune à toutes les pages.

default.json

{
  "title": "Default title",
  "template": "build/template/default.html"
}

index.html.json

{
  "title": "Home title",
  "content": "build/page/index.html"
}

default.json + index.html.json

{
  "title": "Home title",
  "template": "build/template/default.html",
  "content": "build/page/index.html"
}

Note : le fichier default.json n'est pas obligatoire.

Template

Le fichier template est le squelette de la page :

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr">
    <head>
        <meta charset="utf-8">
        <title>{{ title }}</title>
        <meta name="description" content="{{ description }}" />
        <link rel="stylesheet" href="/css/style.css" />
    </head>
    <body>
        {% content %}
    </body>
</html>

Toutes les variables entre les doubles accolades {{ }} seront remplacées par le texte déclaré dans le fichier json.

Toutes les variables entre les simples accolades et pourcent {% %} seront remplacées par le contenu du fichier HTML déclaré dans le fichier json.

Astuce : indiquez false pour une variable dans le fichier json pour l'ignorer.

Ressources

Toutes les ressources nécessaires comme les js, css ou images sont copiés automatiquement à partir du dossier build/web vers le dossier web.

Fichiers statiques

Les fichiers statiques sont ajoutés ou rafraîchis lorsque les pages sont consultées dans le navigateur. Lorsque /hello.html est ouvert, le fichier hello.html est automatiquement généré dans le dossier web.

Crawler

Le site peut être re-généré entièrement via un crawler (par exemple si le template est mis à jour). StaPy fournit un simple crawler cURL. Toutes les routes (json) seront consultées.

sh crawler.sh

200 http://localhost:1985/
200 http://localhost:1985/hello.html
...

Vous pouvez supprimer le dossier web et démarrer le crawler sans problème.

Netlify

Configurez simplement Netlify pour déployer le dossier web du dépôt Git.