# Générateur de site statique

Un générateur de site statique, souvent abrégé SSG (en anglais : Static Site Generator), est un outil logiciel qui permet de créer des sites web composés de pages statiques, généralement au format HTML.
Contrairement aux systèmes de gestion de contenu (CMS) dynamiques, les générateurs de sites statiques produisent des fichiers HTML, CSS et JavaScript prêts à être servis directement par un serveur web, sans nécessiter de traitement côté serveur au moment de la requête.

## Histoire

Les premiers sites web sont statiques avant que ne se popularisent les sites web dynamiques, programmés avec des Framework Web ou – plus tard – générés par des CMS. Ces générateurs de sites dynamiques sont plus simples à utiliser que les éditeurs de texte avec lesquels les sites web statiques étaient générés et par conséquent beaucoup de sites sont dynamiques en raison de la facilité à les produire et non en raison d'un réel besoin de fonctions dynamiques. C'est alors que se développent des outils pour générer des sites statiques plus facilement. Ces outils sont les SSG.

## Caractéristiques

La caractéristique principale de ces SSG par rapport à l'édition d'un fichier HTML avec un éditeur de texte est le confort d'utilisation. Pour rendre la rédaction plus confortable, ces SSG incorporent la gestion de langages de balisage légers tels que le Markdown et peuvent répéter des gabarits (templates) récurrents tels qu'un en-tête ou un pied de page.
Comparés aux CMS, les sites générés présentent des avantages importants en termes de performances, sécurité, et simplicité. Ils offrent une excellente performance car les pages statiques se chargent rapidement en l'absence de traitement côté serveur et peuvent bénéficier d'une mise en cache efficace. Cette architecture simplifie également la sécurité, réduisant les risques de vulnérabilités liés aux bases de données ou au traitement dynamique. Le déploiement et l'hébergement sont également simplifiés car il suffit la plupart du temps de déposer les fichiers générés sur le serveur web. De même, les fichiers source peuvent être manipulés par n'importe quel éditeur de texte et gérés avec des systèmes de contrôle de version comme Git.
Cependant, ces avantages s'accompagnent de certaines contraintes. La principale limitation concerne le contenu dynamique : l'intégration de fonctionnalités interactives nécessite souvent le recours à des solutions tierces ou des API. La mise à jour du contenu peut s'avérer moins souple que sur un CMS traditionnel, car elle implique une régénération et un redéploiement du site. Enfin, bien que puissants, les générateurs de sites statiques peuvent présenter une courbe d'apprentissage plus raide pour les utilisateurs non techniques, comparés à certains CMS plus accessible et leurs éditeurs WYSIWYG.

## Fonctionnement

Les générateurs de sites statiques fonctionnent généralement selon le processus suivant :
* Création du contenu : L'utilisateur crée le contenu du site, souvent dans un langage de balisage léger comme Markdown ou AsciiDoc.
* Design des pages : Des modèles sont créés pour définir la structure et la mise en page du site, souvent à l'aide de feuilles de style (CSS).
* Configuration : L'utilisateur configure les paramètres du site, tels que les métadonnées et la structure de navigation.
* Génération : Le générateur compile le contenu, les modèles et la configuration pour produire des fichiers HTML statiques.
* Déploiement : Les fichiers générés sont téléchargés sur un serveur web ou une plateforme d'hébergement.

## Exemples

* Hugo, en langage Go ;
* Jekyll et Nanoc, en Ruby ;
* Eleventy, en JavaScript ;
* Pélican, en Python ;
* Zola, en Rust ;
* Pandoc, et un ensemble de scripts bash.