StaPy

Static Site Generator

StaPy est un générateur de site statique. Il fonctionne avec Python sans paquet supplémentaire.

Télécharger Source

Compatibilité

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

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 ou depuis le lien ci-dessus.

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

Serveur HTTP

Démarrez le serveur autonome :

python3 server.py

Sur Windows 10 double-cliquez simplement sur le fichier server.py.

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

Environnements

Les fichiers statiques sont générés dans le dossier web. Il contient les dossiers correspondant aux différents environnements (devel, prod...).

Pour la production, ajoutez un dossier prod dans le dossier web. Il contiendra toutes les resources que vous devez déployer (html, css, js, images...).

Après l'ajout d'un nouvel environnement, il est nécessaire de redémarrer le serveur.

Route

Lorsqu'une page est consultée dans le navigateur, le serveur recherche un fichier json dans le dossier source/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": "template/default.html",
  "content": "page/index.html"
}

La clé template est nécessaire.

Les variables spécifiques à l'environnement sont déclarées avec le suffixe correspondant à l'environnement :

{
  "url.local": "http://localhost:1985/",
  "url.prod": "https://www.example.com/"
}

Le suffixe est identique au nom du dossier de l'environnement. Pour le rendu du site sur l'environnement local, le suffixe est toujours "local".

Une variable peut présenter une valeur par défaut :

{
  "my_text": "Tous les environnements affichent ce texte",
  "my_text.local": "Sauf le local avec celui-ci"
}

Un fichier nommé default.json dans le dossier source/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": "template/default.html"
}

index.html.json

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

default.json + index.html.json

{
  "title": "Home title",
  "template": "template/default.html",
  "content": "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="{{ url }}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 source/web vers le dossier web pour tous les environnements (exemple: web/prod).

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 pour tous les environnements (exemple: web/prod).

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 contenu du dossier d'un environnement et démarrer le crawler sans problème.

rm -rf web/prod/*
sh crawler.sh
git add -A web/prod

Netlify

Configurez simplement Netlify pour déployer le dossier de l'environnement (par exemple web/prod) du dépôt Git.

Thèmes

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