Docpad, Jekyll, Pelican… Les générateurs de sites statiques
Nous vous demandions il y a quelque temps si vous étiez plutôt site statique ou dynamique et je me suis dit que autant les CMS sont connus de tous, autant les générateurs de sites statiques, excepté peut-être Jekyll, le sont nettement moins.
Il est temps de réparer cette erreur et de vous présenter une compilation de mes préférés sur les 213 recensés dans le genre. J’ai choisi des projets Open Source bien maintenus par de nombreux contributeurs.
Les générateurs de sites statiques
Un générateur de site statique permet de générer des pages web « prêtes à l’emploi », sans autre traitement côté serveur que celui de servir la page.
Le regain d’intérêt que connaît ce genre de générateurs de sites est en grande partie dû à la possibilité de tout contrôler et au fait que de puissantes chaînes de travail ont vu le jour pour automatiser toutes les tâches répétitives comme création de vignettes, concaténation, minification du code…
Tous les générateurs présentés ici possèdent en commun un certain nombre de fonctionnalités comme:
- Séparation du contenu et du design (layouts, templates).
- Inclusion de contenus (includes, partials).
- Écriture du contenu en Markdown à minima.
- Gestion de meta-données précise et extensible.
- Extensible via API ou plugins.
- Gestion de tags voir de catégories.
Les générateurs de sites statiques s’adressant malgré tout plus à un public orienté « coding », il m’a paru logique de les présenter par langage plutôt que par fonctionnalités. De toute façon, ils permettent tous de faire plus ou moins la même chose… Un site web !
Générateurs en Ruby
Je commence par le Ruby car c’est ce langage qui m’a amené en 2010 à reconsidérer les générateurs de sites statiques comme alternative viable à un logiciel de blogging dynamique comme Wordpress, comme le faisait MovableType, logiciel avec lequel j’ai commencé à bloguer vers 2002.
Jekyll
Jekyll est certainement le plus connu aujourd’hui des générateurs de sites statiques. Il a donné naissance à de nombreux rejetons comme Octopress. Nous couvrons régulièrement sur Wooster ce logiciel car c’est celui que nous utilisons à l’heure où j’écris ces lignes. Il est facile de trouver des scripts qui permettent d’importer un blog depuis Wordpress ou autre moteur de blog. La grande force à mon humble avis de Jekyll est la puissance de son système de templating qui permet de se tirer de pas mal de situations sans écrire une ligne de code Ruby.
Nanoc
Nanoc se distingue de Jekyll par des fonctionnalités plus riches « out of the box ». Nanoc utilise un principe de routes qui permettent virtuellement n’importe quel traitement sur le contenu en fonction de celle-ci. Vous spécifiez des URLs sur lesquelles vous faîtes correspondre un layout, un contenu et des filtres. C’est un peu le principe que l’on retrouve sur un serveur d’applications comme Sinatra.
Middleman
Middleman est le dernier que j’ai pas mal trituré. Il est bien mieux doté que Jekyll par exemple si vous souhaitez faire un projet multilingue. il possède un système de données locales dont s’est grandement inspiré consciemment ou non Jekyll.
Générateurs en Python
Il existe une offre pour les aficionados du serpent, et même si elle est moins fournie qu’en Ruby ou Javascript, la qualité est bien là et vous pouvez vous appuyer sur n’importe lequel de ces deux projets pour faire votre site ou blog.
Pelican
Pelican est très clairement orienté blog et peut donc constituer un excellent choix si cette partie est dominante dans votre projet. Le templating est basé sur Jinja2, bien connu dans la communauté. Pelican permet directement, sans ajout de plugins, d’écrire en Markdown mais aussi en reStructuredText et AsciiDoc. Je vous reparlerais de ces deux là prochainement.
Hyde
Hyde est le penchant Python de Jekyll, facile à deviner vu le nom. Il est donc très proche en matière de possibilités. Ne l’ayant pas testé, je ne saurais vous en dire beaucoup plus à son sujet.
Générateurs en Javascript
Si il y a bien un langage où l’offre en matière de générateurs de sites statiques est en train de se développer, voir de se réinventer, c’est bien Javascript avec Node.js. Certains sont clairement en train de s’orienter vers des projets hybrides, avec exécution côté serveur de scripts. C’est un peu la raison d’être de Node.js en même temps !
Harp
Harp est peut-être le plus simple de ceux que je présente en Javascript mais n’en reste pas moins un projet bien suivi et qui permet de faire un blog ou un site sans problème.
Assemble
Assemble semble très puissant et est entièrement construit pour être utilisé avec Yeoman et donc par voie de conséquence, Gruntjs et Bower. Et savoir qu’il est utilisé par Zurb Foundation, l’un des plus puissants frameworks HTML CSS disponibles, ne peut que rassurer sur sa capacité à assurer !
Docpad
Docpad me semble très prometteur et je commence simplement à effleurer la puissance de ce logiciel. La vision du principal développeur est claire: Créer un système de Gestion de Contenu (CMS) entièrement découplé, composé de briques interchangeables. Les projets connexes à Docpad sont là pour démontrer les bien fondés de cette approche. Jetez un oeil sur ce workflow de publication pour avoir une idée de ce que peut représenter un CMS « découplé ». Et regardez cet exemple pour vous convaincre un peu plus. Le bouton « Edit » sur chaque post permet de forker le post dans Github. Finissez par un petit coup d’oeil sur Inline GUI et vous comprendrez très bien où Docpad veut aller. Simple et puissant !
Je citerais pour finir avec Javascript deux projets que je ne connais pas bien encore mais que je vais commencer à tester comme Wintersmith ou Hexo, ce dernier poussant « le vice » à être compatible avec les plugins Jekyll/Octopress.
Et Go
Dernière minute avant publication, je viens de découvrir le premier générateur de sites statiques en Go, le langage qui affolera bientôt le buzzomètre ! Le projet s’appelle Hugo, est multi-plateformes (comprendre Linux, FreeBSD, OS X et Windows) et il semble comme les autres capable de gérer à la fois un site et un blog. À suivre donc…
Alors statique ou dynamique ?
La sensation de devoir s’adapter au workflow d’un outil et non l’inverse amène souvent à considérer ce genre d’outils comme une alternative viable. Souplesse et total contrôle sont les maîtres mots dans ce style d’outils.
Comme souvent en informatique mais pas que, les hommes ont tendance à passer d’un extrême à l’autre avant de trouver un certain équilibre entre deux pôles opposés. Le développement web ne déroge pas à la règle et nous sommes passés en une quinzaine d’années du tout statique au tout dynamique. Nous sommes je crois en train de redécouvrir les charmes du statique dans certains contextes de développement.