Mon passage à Pelican

Posted on 2014-04-22 in Blog

Présentation

Pelican est un générateur de site statique écrit en python. Un générateur de site statique est simplement un programme qui transforme des fichiers textes en un site web avec thème, catégorie, … Les plus connus sont jekyll qui est écrit en ruby, middleman en ruby également, octopress qui est basé sur jekyll et nanoc. Mais il y en a beaucoup d'autres.

L'avantage de ce genre de site est qu'ils sont simples, qu'ils n'ont pas besoin de bases de données ou de langages particuliers comme PHP sur votre serveur. Il faut juste un serveur web qui délivre des fichiers. Et ça, ils sont tous capables de le faire. J'ajouterais également la simplicité de rédaction : pas d'éditeur WYSIWYG, juste du texte brut et une syntaxe légère pour y donner du sens. Cela implique également que l'on peut utiliser un gestionnaire de version comme git ou mercurial pour gérer les fichiers (et pour en faire des sauvegardes facilement).

Avant de passer à Pelican, j'ai pu tester Jekyll. Les deux sont très proches, très complets et extensibles via des plugins. Si j'ai préféré Pelican c'est parce que :

  • Il est en python ce qui me permettra de faire des modifications ou des plugins au besoin (je ne connais pas suffisament ruby pour ça).
  • Il a un système de cache ce qui évite de devoir recompiller tout les fichiers à chaque fois.

L’installation

Tout est très bien détaillé dans la documentation officielle. J'ai choisi la méthode recommandé : dans un enviromment virtuel, en python 3 (pour être moderne) et à partir de la version git (le plugin des commentaires statiques ne fonctionne pas bien sur la dernière version publiée).

Attention toute fois, en python 3 la commande virtualenv ne fonctionne pas comme il faut. J'ai utilisé la commande python3 -m venv blog pour créer cet environement dans le dossier blog. Le module venv vient par défaut avec python 3. Reste à installer pelican et toutes les bibliothèques avec pip install <bibliothèque> . Pelican a nottament besoin de Markdown. Les autres sont installées comme dépendance par pip. Le support d'Asciidoc demande un peu plus de travail. Allez voir la doc pour plus d'informations.

Ensuite, la commande pelican-quickstart va vous aider à générer la configuration du site. Vous allez devoir répondre à plusieurs questions pour que le site vous corresponde. Point intéressant, cette commande va aussi créer un Makefile pour vous aider à automatiser le processus de création de site. Plus d'infos ci-dessous.

Le site

Par défaut, Pelican supporte les articles écrits en markdown, RestructuredText ou dans une moindre mesure Asciidoc. On écrit simplement l'article dans le dossier content (si vous avez lancez pelican-quickstart ) et on l'enregistre avec la bonne extension (.md pour du markdown ou .rst pour RestructuredText).

Une fois l'article écrit, on lance la commande pelican chemin/vers/votre/article et pelican va générer votre site statique dans un dossier nommé output. Si vous avez un Makefile, un simple make html suffira. Pour visualiser votre site sur votre ordinateur, make serve va lancer un serveur sur http://localhost:8000 . Simple et efficace.

Les plugins et les thèmes

Un point intéressant : les fonctionnalités de Pelican peuvent être étendu via des plugins. Cela va de l'ajout d'un système de commentaires statiques au rendu des équations LaTeX en passant par une gallerie. Allez par pour en savoir plus.

J'ai d'ailleur écrit mon propre plugin : creole-reader qui ajoute le support de la syntaxe creole dans pelican. Je ne suis en effet pas un grand fan de Markdown et la syntaxe Rest ne me plait que moyennement. Je crérais peut être aussi un plugin pour org-mode si je n'arrive pas à me faire à Rest (creole est beaucoup moins complet et trop limité pour des long tutos).

Si vous pouvez créer facilement des thèmes à partir du moteur de template Jinja2, vous pouvez aussi prendre un des nombreux thèmes disponibles ici. J'ai choisi dev-random2 (que j'ai un peu adapté).

Conclusion

Mon passage à Pelican est récent mais je suis vraiment séduit par l'outil. Auparavant, mon blog était en Drupal. Cela peut paraître étrange, mais je gère une installation multisite de Drupal, donc ce n'était pas un problème. Par contre, Drupal manque de souplesse pour un blog. D'autant que sur notre installation, c'est soit du texte brut soit du HTML (éventuellement avec CKEditor). C'est d'autant plus pénible que CKeditor supporte très mal le code et à tendance à enlever certaines balise. Peu pratique, idem pour la gestion des révisions c'est pas souple même si ça marche très bien.

Avec pelican, je suis très content de pouvoir utiliser du balisage léger et mercurial pour les révisions. Plus qu'à importer tout mes articles ;-).