Quelques trucs pour Pelican
La version 3.0 de Pelican est sortie cet été. Pelican est le générateur statique de blog utilisé pour ce site et auquel je contribue lorsque j’en ai l’occasion. Ce billet regroupe quelques trucs et astuces pour faciliter son utilisation.
Archives par année
Pour regrouper les articles par année, dans la page des archives, l’astuce est d’utiliser la fonction groupby de jinja2 :
{% for year, list in dates|groupby('date.year')|reverse %} <h4>{{ year }}</h4> <ul> {% for article in list %} <li><a href='{{ article.url }}'>{{ article.title }}</a>, <time datetime="{{ article.date.isoformat() }}">{{ article.locale_date }}</time></li> {% endfor %} </ul> {% endfor %}
Gestion des assets (css, js)
Une de mes contributions à pelican est l’intégration de webassets, bibliothèque qui permet gérer les assets (css, javascript): concaténation, minification, compilation … L’utilisation de webassets est décrite dans la doc. Par exemple, pour les css:
{% assets filters="cssmin", output="css/style.min.css", "css/inuit.css", "css/pygment-monokai.css", "css/main.css" %} <link rel="stylesheet" href="{{ SITEURL }}/{{ ASSET_URL }}"> {% endassets %}
va produire un fichier css minifié avec un tag de version pour la gestion du cache:
<link href="http://SITEURL/theme/css/style.min.css?b3a7c807" rel="stylesheet">
Ne pas générer certaines pages
Pour ne pas générer les pages pour chaque auteur (inutile quand il n’y a qu’un seul auteur):
AUTHOR_SAVE_AS = False
Pour ne pas générer les pages avec les liste de catégories et de tags:
DIRECT_TEMPLATES = ('index', 'archives')
Compilation automatique
Le module python watchdog permet de détecter les changements sur les fichiers pour relancer la compilation. On l’utilise avec la commande watchmedo:
watchmedo shell-command --patterns="*.rst" -i ".\\#*" \\ --recursive --command="pelican -s pelican.conf.py" content
Note
Mise à jour 24/05/2013 Le mode autoreload de Pelican (pelican -r | --autoreload) surveille désormais le contenu ainsi que le fichier de configuration et le thème.