Bien débuter avec TinySSG
Ecrit par Herve • 13 Nov 2019
Installation
Pour démarrer, le plus rapide est de cloner le dépôt git.
git clone https://github.com/Herve07h22/tinySSG.git
Ensuite, installer les dépendances dans un environnement dédié.
cd tinySSG
python -m venv tinyenv
./tinyenv/Script/activate
pip install -r requirements.txt
NB : tinySSG a été testé sur la version 3.6.6 de python.
Générer l'exemple et vérifier que tout fonctionne.
python main.py
Cela doit conduite à la création d'un répertoire dist
comportant la totalité du site statique.
Editer le contenu
Le plus simple est de coller à la structure suivante dans le répertoire content
:
content
|
|-page1
| |--- text.md
| |--- carousel
| | |--- image1.jpg
| | |--- image2.jpg
| | |--- image3.jpg
| |--- gallery
| |--- gal1.jpg
| |--- gal2.jpg
|-page2
| |--- anothertext.md
| |--- carousel
| | |--- image4.jpg
| | |--- image5.jpg
| | |--- image6.jpg
| |--- gallery
| |--- gal3.jpg
| |--- gal4.jpg
Lors du lancement de la génération du site :
- chaque fichier MarkDown au format
.md
déclenchera la génération d'une page sous la forme d'un fichier HTML dans le répertoire de destination - chaque sous répertoire voisin comportant des images sera rattaché à cette page. Chaque image sera copiée dans le répertoire de destination, dans le sous-répertoire
original
.
Créer les templates
Les fichiers dans le répertoire templates
permettent de décrire la façon dont les pages HTML seront générées à chaque fois qu'un fichier MarkDown sera analysé.
Le nom du fichier template à utiliser doit être spécifié dans l'entête du fichier MarkDown.
Le fichier template doit être au format HTML, en y incluant des directives Jinja2.
Les directives utilisent les variables de la page pour générer le contenu.
Lancer la génération
La génération du site statique est réalisée par le script main.py
.
# -*- coding: utf-8 -*-
from ssg.ssg import ssg
from os.path import join
from os import getcwd
if __name__ =='__main__':
# Create instance of ssg class. Pass the content dir to the constructor.
mon_site = ssg(contentDir=join(getcwd(), "content"))
# Copy the assets to the destination dir
mon_site.renderAssets( assetDir=join(getcwd(), "assets") , destination_dir=join(getcwd(), "dist") )
# render the site
mon_site.render( template_dir=join(getcwd(), "templates") , destination_dir=join(getcwd(), "dist") )
On spécifie :
- l'emplacement du répertoire contenant les fichiers MarkDown et les images (
ContentDir
), - l'emplacement du répertoire contenant les fichiers css, jss et autres nécessaires à l'affiche du site (
assetDir
). Tous les fichiers du répertoire seront simplement recopiés dans le répertoire de destination, - l'emplacement du répertoire contenant les templates (
template_dir
), - l'emplacement du répertoire de destination comportant tout le site généré (
destination_dir
)
Le lancement de la génération s'effectue ainsi :
python main.py
Optimiser les images
Par défaut, le répertoire de destination comportera des sous répertoires original
et blur
. Les images du répertoire blur
servent au lazy loading.
Pour générer des images supplémentaires au format voulu, il suffit d'invoquer la méthode addImageProcessing
:
# label : target sub-dir for the resized images
# x : new width (optionnal)
# y : new height (optionnal)
mon_site.addImageProcessing( label='square', x=400, y=400 )
Le traitement des images sert à créer des vignettes par exemple. Consulter ce post pour en savoir plus.
déployer sur Netlify
Netlify est mon hébergeur préféré pour les sites statiques. En particulier, si votre environnement est dans un dépot git, sa mise à jour déclenchera la re-gérénation de votre site.
Pour mettre en ligne cet exemple avec Netlify, cliquer ici :