Ebook Arduino !

couverture ebook

Vous avez une question ? Une remarque ? N'hésitez pas à venir en parler dans le chat si je suis en cours de diffusion !

Ce dernier chapitre viendra conclure ce tutoriel. Il vous permettra quelques paramètres de configuration, afin de pouvoir peaufiner votre utilisation de Pelican et rendre votre installation la plus pratique pour vos usages. Les différents paramètres présentés ici peuvent tous être retrouvés sur cette page de la documentation de Pelican .

Afin de garder le chapitre digeste, je ne vais pas présenter tous les paramètres utilisables dans le fichier de configuration, mais seulement ceux que j’estime les plus utiles pour commencer. Libre à vous de consulter la page de documentation ci-dessus pour en savoir plus.

Sommaire

Quelques bonnes pratiques

Commencons tout d’abord par quelques bonnes pratiques.

Sélection de la config

Saviez-vous qu’il est possible de sélectionner un fichier de configuration au moment de l’appel à Pelican ? En effet, une option à passer en paramètre de la commande Pelican permet de spécifier le chemin vers un fichier spécifique, plutôt que le fichier de base pelicanconf.py dont nous parlons depuis le début de ce tutoriel.

Cette option est activable via le paramètre -s <chemin/du/fichier/de/conf.py> ( s pour settings ). Il suffit donc simplement de rajouter ce paramètre à l’appel de la commande. Par exemple :

pelican content -s /home/eskimon/coolcookies/ma_conf_de_prod.py

Héritage de configuration

Il est toujours bon de séparer proprement les paramètres de votre environnement de développement et ceux servant à produire les pages finales. En effet, ces derniers peuvent varier entre les deux cas.

Cependant, il est pénible de recopier à la main tout les paramètres d’un fichier de configuration vers l’autre. De plus, faire ainsi risque d’engendrer des oublis si une modification doit être faite dans les deux fichiers à la fois.

Pour palier à cela, on utilise une méthode que l’on pourrait qualifier «d’héritage». Nous allons créer un fichier de base (en l’occurrence notre fichier habituelle pelicanconf.py ) qui servira à définir tout nos paramètres par défaut commun à tout nos environnements (développement, préprod’, prod' etc…). Ensuite, on créera autant de fichier de configuration propre aux différents environnements. Prenons par exemple le cas ou l’on veut une configuration de développement dans laquelle la pagination sera réglée à 5 articles pour s’assurer que le paginateur fonctionne bien, et une configuration de production avec une pagination à 20 articles. Dans notre fichier standard pelicanconf.py on aura alors DEFAULT_PAGINATION = 5 .

Nous allons ensuite créer un fichier prod_conf.py . Ce dernier devra reprendre toute la configuration de base, mais devra mettre à jour le paramètre de pagination. Pour cela, on commencera par importer dans notre fichier toutes les valeurs du fichier «parent», pelicanconf.py . Ensuite, il ne restera qu’à modifier les paramètres nécessaires. Tout les autres seront automatiquement importé, mais garderont leur valeur d’origine.

## On importe toute la configuration de pelicanconf
import os
import sys
sys.path.append(os.curdir)
from pelicanconf import *

## Puis on modifie les paramètres qu'il faut mettre à jour
DEFAULT_PAGINATION = 20

Ainsi, quelque soit les modifications faites dans pelicanconf.py , on les retrouvera forcément dans prod_conf.py .

Il ne reste plus qu’à appeler ce fichier lors de la génération via la commande

pelican content -s prod_conf.py

Gestion des fichiers statiques

Tout d’abord, clarifions la notion de fichiers «statiques» étant donnée que depuis le début on travaille sur un site qui est lui-même statique. Dans le contexte du développement web, un fichier statique est un fichier qui doit-être servi tel quel, sans manipulation du serveur. Par exemple, le fichier contenant le CSS ou encore une image sont tout deux des fichiers que l’on qualifient de statiques.

Dans Pelican, on trouve ce type de fichiers dans deux endroits bien différents : pour le thème et dans les contenus.

Pour le thème

Comme on vient de le voir, le thème a besoin de fournir des fichiers statiques, notamment pour le CSS. Lorsque l’on a créé notre thème, souvenez-vous nous les avons mis dans le dossier static/css . Ce dossier peut-être personnalisé via le paramètre THEME_STATIC_PATHS . Par défaut, on a nommé notre dossier static , mais on aurait très bien pu changer ce chemin si besoin. Vous remarquerez que cette variable est un tableau. En effet, on peut fournir plusieurs chemins à utiliser.

THEME_STATIC_PATHS = ['static']

Les contenus statiques

Sur notre site, on peut vouloir imaginer avoir des fichiers que l’on a réaliser nous-même et ne sont donc pas généré via le Pelican. Ce peut-être par exemple des fichiers «de gestion techniques» du site (comme le fichier robots.txt ) ou bien des documents que l’on souhaiterais mettre à disposition du public (un fichier pdf par exemple).

Là encore, il va falloir informer Pelican où trouver ces fichiers, et où les placer dans le dossier output final.

Pour cela, on utilise plusieurs paramètres. Tout d’abord, STATIC_PATHS qui va lister les emplacements à copier. Dans l’exemple suivant, l’ensemble du dossier pdfs et le fichier extra/robots.txt seront copiés. Ces deux éléments seront considérés comme étant dans le dossier de contenu content .

STATIC_PATHS = ['pdfs', 'extra/robots.txt']

Si l’on ne fait rien de plus, les éléments seront copiés tel quel ainsi que leur arborescence directement dans le dossier output . Cependant, certains fichiers peuvent nécessiter d’être placé à un endroit particulier. C’est là que rentre en jeu EXTRA_PATH_METADATA . Ce dictionaire va permettre de paramètrer certaines métadonnée de différents objets, en l’occurrence nos fichiers statiques. Pour cela, on lui fournir comme clé le fichier à modifier ( extra/robots.txt par exemple) et la donnée à modifier (en l’occurence son chemin, path ).

Voici par exemple ce que nous pourrions faire pour déplacer le fichier extra/robots.txt à l’emplacement robots.txt (sans le préfixe extra/ ) :

EXTRA_PATH_METADATA = {
    'extra/robots.txt': {'path': 'robots.txt'}
}

(Vous remarquerez que je n’ai pas touché au dossier pdfs ).

Quelques conseils supplémentaires

Voici en vrac quelques paramètres qui peuvent toujours être utile.

Pour les flemmards

Si vous en avez marre de spécifier content dans l’appel de votre commande Pelican, vous pouvez spécifier le nom du dossier qui contient le contenu (articles, pages, etc) dans la configuration. C’est le paramètre PATH qui gère cela.

PATH = 'content'

De la même facon, si vous êtes seul à rédiger tout le contenu, la variable author dans toutes les métadonnées des articles est un peu monotone. Elle peut-être paramétrer directement via la variable AUTHOR dans la configuration.

AUTHOR = 'Eskimon'

Les der des ders

Enlarge your summary

Si vous trouver que la variable contenant le résumé ( article.summary ) est trop courte, vous pouvez l’augmenter via le paramètre SUMMARY_MAX_LENGTH avec un entier représentant le nombre de caractère.

SUMMARY_MAX_LENGTH = 100
Altération du dossier output

Enfin, je vous propose pour finir deux astuces liés au dossier qui va contenir le site généré. Premièrement, la constante OUTPUT_PATH permet de donner le nom de ce dossier. Par défaut c’est output , mais vous pouvez mettre ce que vous voulez. Par exemple, si vous souhaitez faire de l’hébergement sur l’outil Pages de GitLab , alors il faudra mettre ce nom de dossier à public .

OUTPUT_PATH = 'public/'

Enfin, si vous souhaitez conservez des fichiers/dossiers dans votre dossier de sortie ( output ), comme par exemple les fichiers de gestion de version si vous gérer votre déploiement via un outil de ce genre, c’est la donnée OUTPUT_RETENTION qu’il faut éditer. Il faut lui fournir un tableau contenant tout les fichiers à conserver. Ces derniers ne seront alors plus effacés si vous avez activez le paramètre DELETE_OUTPUT_DIRECTORY .

## Par exemple, pour conserver mon suivi de version via git
OUTPUT_RETENTION = ['.git', '.gitignore']

Licence CC BY-NC-SA

Vous avez une question ? Vous souhaitez partager votre experience ? Venez nous rejoindre sur Discord !