Logo Jamstatic
Jamstatic
Sites statiques et architectures découplées

Les nouveautés de Jekyll 3.3

· Lecture 3 min · Jekyll

Les thèmes peuvent désormais fournir des assets statiques et dynamiques dans le dossier /assets

Depuis Jekyll 3.2, il est possible de packager un thème sous forme de gem, il était déjà possible d’embarquer des includes, des layouts et des fichiers Sass. Avec la version 3.3, il est enfin possible d’ajouter aussi des assets à son thème. Les développeurs de thèmes vont donc pouvoir fournir des thèmes complets et les utilisateurs pourront les tester et les mettre à jour plus simplement. Cette fonctionnalité n'est pas encore très mature et le support de fichier de configuration pour les thèmes ou l’ajout d’un dossier data sont en cours de discussion.

Pour faciliter davantage la gestion de thème, tout fichier présent dans le dossier /assets de votre thème sera considéré comme faisant partie du site de l’utilisateur du thème. Vous pouvez donc ajouter du Sass, du JavaScript, du CoffeeScript, des images, des fontes et tout ce qui sera utile à la présentation et au comportement de votre thème. Les règles sont les mêmes que dans Jekyll : si un fichier comporte des entêtes YAML Front Matter, il sera converti et traité par le moteur de rendu. Si le fichier ne comporte aucun en-tête YFM, il sera simplement copié comme un asset statique.

Notez bien que les fichiers de l’utilisateur avec le même chemin prennent toujours le pas sur ceux de votre thème. Par exemple si un fichier /assets/main.scss est présent dans le dossier du site de l’utilisateur, c'est lui qui sera traité en lieu et place du fichier /assets/main.scss présent dans la gem de votre thème.

Nous vous invitons à vous reporter à la documentation officielle sur la gestion des assets dans les thèmes pour plus d’informations.

Les filtres relative_url et absolute_url

Deux nouveaux filtres font leur apparition pour simplifier la gestion des URLs dans vos templates. Fini de vous emmêler les pinceaux avec baseurl et url. Lorsque vous développez en local, si vous définissez la valeur de baseurl afin qu'elle corresponde à votre environnement de développement, mettons par exemple baseurl: "/mondossier", le filtre relative_url se chargera de préfixer cette valeur pour toutes les URLs que vous appellerez :

{{ "/docs/assets/" | relative_url }} => /mondossier/docs/assets

Par défaut, baseurl est défini à "" et sera remplacé tel quel (ne définissez jamais cette valeur à "/"):

{{ "/docs/assets/" | relative_url }} => /docs/assets

Le résultat d’un appel à relative_url produira toujours une URL relative au domaine racine. Le même principe s'applique au filtre absolute_url, il ajoute les valeurs définies dans baseurl et url et facilite ainsi la création d’URLs absolues :

{{ "/docs/assets/" | absolute_url }} => http://jamstatic.fr/mondossier/docs/assets

site.url est maintenant défini pour le serveur de développement

Quand vous lancez la commande jekyll serve en local, elle va démarrer un serveur web, généralement à l’adresse http://localhost:4000, sur lequel vous allez pouvoir prévisualiser votre site durant la phase de développement. Si vous utilisez le filtre absolute_url ou site.url dans votre code, vous avez probablement dû créer un fichier de configuration pour le développement, qui va réinitialiser la valeur d’url à http://localhost:4000.

C’est maintenant inutile ! Quand vous lancez la commande jekyll serve, Jekyll va générer votre site avec les valeurs de host, port et des options relatives à SSL. Par défaut ce sera donc url: http://localhost:4000. Quand vous développez en local, la valeur de site.url sera donc remplacée par http://localhost:4000.

C’est le comportement par défaut lorsque vous exécutez Jekyll en local. Ce ne sera pas le cas si vous exécutez jekyll serve si vous précisez un environnement de production avec JEKYLL_ENV=production. Si la variable d’environnement JEKYLL_ENV possède une autre valeur que development (sa valeur par défaut), Jekyll n'écrasera pas la valeur du paramètre url définie dans votre fichier de configuration. Attention, cela ne s'applique qu'à la commande serve, pas à la commande build`.

Et bien plus encore

Pour avoir le détail de tous les correctifs et les améliorations mineures apportées, vous pouvez consulter le CHANGELOG complet.

Jekyllez bien !