Temps de lecture : 6-7 minutes
“Pourquoi se casser la tête avec un générateur de sites statiques quand on peut utiliser WordPress ?”
Si tu te poses cette question, cet article est pour toi. Je vais te montrer pourquoi Jekyll n’est pas un choix de hipsters, mais une solution intelligente pour des sites ultra-rapides, sécurisés et économiques.
Qu’est-ce que Jekyll ?
Jekyll est un générateur de sites statiques écrit en Ruby. Il transforme des fichiers en texte simple (Markdown) en un site HTML complet et prêt à être déployé. Le principe ? Tu écris du contenu, tu choisis une structure avec des templates, Jekyll compile le tout, et tu upload le résultat sur n’importe quel hébergement web.
Le moteur secret : Liquid
Jekyll utilise Liquid, le langage de template créé par Shopify. C’est simple, sécurisé, et ça permet d’injecter des variables, des boucles, des conditions sans écrire de code Ruby. Tu écris {{ page.title }} ou {% for post in site.posts %}, et Jekyll remplace ça par les vraies valeurs au moment de la génération.
Pourquoi c’est génial ? Parce que tu peux créer des layouts réutilisables, inclure des fragments de code, et organiser ton site en collections sans jamais toucher à la logique métier. Le résultat : un site statique (fichiers HTML/CSS/JS) qui se charge en un clin d’œil.
À qui c’est destiné ?
Jekyll n’est pas pour tout le monde. Mais si tu te reconnais ici, c’est probablement fait pour toi :
- Les blogueurs techniques qui n’ont pas besoin d’une usine à gaz comme WordPress
- Les documentations (comme celle que tu lis en ce moment) – Jekyll est idéal pour ça
- Les portfolios et sites vitrines où le contenu change peu
- Les startups qui veulent un site rapide et pas cher à héberger
- Les devs qui aiment le contrôle total sans se prendre la tête avec une base de données
À éviter si tu veux un site e-commerce complexe avec panier et gestion de stocks, ou si tu as peur de la ligne de commande.
Installation pas-à-pas
1. Ruby et Bundler
Jekyll nécessite Ruby (>= 2.7) et Bundler. Sur Ubuntu/Debian :
sudo apt-get install ruby-full build-essential zlib1g-dev
# Installer Bundlergem install bundler
# Vérifierruby -v # Doit afficher >= 2.7bundle -vSur macOS avec Homebrew :
brew install rubygem install bundlerAttention : Si tu es sur Windows, oublie Ruby natif. Installe WSL2 ou utilise Docker. C’est une des galères de Jekyll : Ruby n’aime pas Windows.
2. Créer un site Jekyll
# Créer un nouveau sitejekyll new mon-site
# Aller dans le dossiercd mon-site
# Installer les dépendancesbundle installTu devrais voir cette arborescence :
mon-site/├── _config.yml # Configuration globale├── _posts/ # Articles au format YEAR-MM-DD-titre.md├── _layouts/ # Templates HTML (default, post, page)├── _includes/ # Fragments réutilisables (header, footer)├── _site/ # Généré automatiquement (à ignorer)├── index.html # Page d'accueil└── assets/ # Images, CSS, JSConfiguration _config.yml
Le fichier _config.yml est le cœur de ta config Jekyll. Exemple minimal :
title: "Mon Blog Tech"description: "Blog sur le développement web"url: "https://monsite.com"baseurl: "" # si ton site est à la racine, laisser videmarkdown: kramdownhighlighter: rougepaginate: 5 # articles par pageOptions utiles :
theme: minima # thème par défaut, ou chemin vers ton thème customplugins: - jekyll-feed - jekyll-seo-tag - jekyll-sitemapÉcrire un article : le frontmatter
Chaque article commence par un frontmatter YAML entre --- :
---title: "Comprendre les générateurs de sites statiques"date: 2026-02-11T10:30:00.000Zcategories: [developpement]tags: [jekyll, static-site, web]image: "/images/jekyll-banner.jpg"description: "Les générateurs de sites statiques comme Jekyll, Hugo ou Astro ont le vent en poupe. Voici pourquoi et comment s'y mettre."---
Ton contenu en Markdown ici.Format du fichier : Les articles doivent être dans _posts/ et nommés AAAA-MM-JJ-titre.md (ou .markdown). Jekyll lit la date dans le nom ET dans le frontmatter, mais c’est le nom qui prime.
Les layouts et includes
Layouts (_layouts/)
Un layout est un template HTML qui encadre ton contenu. Exemple post.html :
---layout: default---<article class="post"> <h1>{{ page.title }}</h1> <p class="meta">Publié le {{ page.date | date: "%d %B %Y" }}</p> {{ content }}</article>{{ content }}: insère le contenu de la page/l’article{{ page.title }}: variable venant du frontmatter
Pour utiliser un layout, dans ton frontmatter : layout: post.
Includes (_includes/)
Ce sont des fragments HTML réutilisables :
<header> <nav> <a href="/">Accueil</a> <a href="/about">À propos</a> </nav></header>Inclusion dans un layout :
<!DOCTYPE html><html><head> <title>{{ site.title }}</title></head><body> {% include header.html %} <main>{{ content }}</main> {% include footer.html %}</body></html>Les variables Liquid
Liquid expose plusieurs variables globales :
| Variable | Description |
|---|---|
site | Configuration globale (site.title, site.baseurl) |
page | Variables de la page courante (page.title, page.url) |
post | Dans une boucle de posts, contient le post actuel |
paginator | Pour la pagination (paginator.page, paginator.posts) |
Exemples pratiques :
<!-- Lien vers la page d'accueil --><a href="{{ site.baseurl }}/">Accueil</a>
<!-- Liste des 5 derniers articles --><ul>{% for post in site.posts limit:5 %} <li> <a href="{{ post.url }}">{{ post.title }}</a> <small>{{ post.date | date: "%b %d" }}</small> </li>{% endfor %}</ul>Filtres Liquid
date: "%d %B %Y": formater une datestrip_html: enlever les balises HTMLtruncate: 100: couper à 100 caractèreswhere:"category","dev": filtrer une collection
Collections et données
Créer une collection
Dans _config.yml :
collections: tutorials: output: true permalink: /tutoriels/:path/Cela crée une collection tutorials. Tu peux y mettre des fichiers dans _tutorials/ sans date obligatoire. Accès :
{% for tuto in site.tutorials %} <a href="{{ tuto.url }}">{{ tuto.title }}</a>{% endfor %}Données externes (YAML/JSON)
Place des fichiers .yml ou .json dans _data/. Exemple _data/authors.yml :
john: name: John Doe bio: "Dev Ruby" twitter: johndoeUtilisation :
{% assign author = site.data.authors[page.author] %}<p>Par {{ author.name }} - @{{ author.twitter }}</p>Développer localement
# Lancer le serveur de devbundle exec jekyll serve
# Ou simplementjekyll serve
# Options utilesjekyll serve --livereload # rechargement autojekyll serve --port 4000 # changer le portjekyll serve --host 0.0.0.0 # accessible sur le réseau localLe serveur tourne par défaut sur http://localhost:4000. Les changements dans les fichiers sont pris en compte instantanément (sauf _config.yml qui nécessite un reload).
Désactiver le cache en dev (dans _config.yml) :
incremental: falseDéployer sur GitHub Pages
Le combo Jekyll + GitHub Pages est mariage parfait. GitHub peut builder automatiquement ton site Jekyll (Ruby activé par défaut), ou alors tu pushes le site compilé.
Option 1 : GitHub Actions build (recommandé)
- Pousse ton code source (avec
_posts,_layouts, etc.) - GitHub détecte un repo Jekyll et build automatiquement
- Le site est servi depuis la branche
gh-pages(oudocs/)
Configuration dans .github/workflows/ :
name: GitHub Pageson: push: branches: [main]jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: ruby/setup-ruby@v1 with: ruby-version: '3.1' - run: bundle install - run: bundle exec jekyll build env: JEKYLL_ENV: production - uses: peaceiris/actions-gh-pages@v3 with: github_token: ${{ secrets.GITHUB_TOKEN }} publish_dir: ./_siteOption 2 : Build local + push _site
# Builder en productionJEKYLL_ENV=production bundle exec jekyll build
# Pousser le contenu de _site vers la branche gh-pagesgit checkout gh-pagescp -r _site/* .git add .git commit -m "Deploy"git push origin gh-pagesCustom domain
Dans _config.yml :
url: "https://blog.thomasgermain.com"Et dans le repo GitHub > Settings > Pages, ajoute ton domain personnalisé. GitHub créera automatiquement un enregistrement CNAME.
Activer GitHub Pages
Dans les paramètres du repo GitHub :
- Source :
mainbranch (avec GitHub Actions) ough-pagesbranch - Build : “Jekyll” (si tu pousses le code source)
Avantages et inconvénients
Avantages
✅ Ultra-rapide : Site statique = pas de base de données = temps de chargement < 1s
✅ Sécurisé : Pas de SQL injection, pas de XSS dans le backend (seulement coté client)
✅ Peu cher : Hébergement gratuit sur Netlify/Vercel/GitHub Pages
✅ Versionnable : Tout est dans Git, historique clair, rollback facile
✅ Simple à comprendre : Fichiers textes, pas de CMS complexe
✅ Flexible : Tu contrôles tout le HTML/CSS/JS
Inconvénients
❌ Pas de backend : Pas de formulaire contact sans service tiers (Formspree, Getform)
❌ Pas de dynamisme : Si tu veux une app web interactive, il faut JS vanilla ou API externe
❌ Re-build à chaque changement : Pas d’édition en temps réel comme un CMS
❌ Ruby peut être capricieux : Dépendances, gems, compatibilité…
❌ Courbe d’apprentissage : Si tu ne connais pas Liquid, ça prend 2-3 jours
Comparaison rapide
| Outil | Type | Apprendre | Vitesse | Coût | Dynamique |
|---|---|---|---|---|---|
| Jekyll | SSG Ruby | Moyen | ⚡⚡⚡⚡⚡ | Gratuit | Non (JS only) |
| Hugo | SSG Go | Facile | ⚡⚡⚡⚡⚡ | Gratuit | Non (JS only) |
| Astro | SSG JS | Moyen | ⚡⚡⚡⚡⚡ | Gratuit | Oui (îlots) |
| WordPress | CMS PHP | Très facile | ⚡⚡ (cache) | 5–20€/mois | Oui, natif |
Mon take : Jekyll reste pertinent mais Hugo et Astro sont souvent plus simples et rapides. Jekyll? Si tu aimes Ruby, Liquid, ou que t’as besoin d’une compatibilité parfaite avec GitHub Pages (qui le supporte en natif).
Quand choisir Jekyll ?
Prends Jekyll si :
- ✅ Tu veux un blog ou une doc technique simple et rapide
- ✅ Tu connais déjà Ruby/Rails
- ✅ Tu aimes Liquid et sa simplicité
- ✅ Ton hébergement est GitHub Pages sans config complexe
- ✅ Tu veux un site 100% statique et sécurisé
Évite Jekyll si :
- ❌ Tu veux du contenu éditable par des non-techniciens (il faut un headless CMS)
- ❌ Ton site a besoin de formulaires dynamiques, d’utilisateurs, de commerce
- ❌ Tu détestes Ruby et ses gems foireux
- ❌ Tu veux le must en performance → regarde Astro ou Hugo plutôt
Liens utiles
- 📚 Documentation officielle Jekyll
- 🎨 Thèmes Jekyll
- 📦 Plugins populaires
- 💎 Référence Liquid
- 🏗️ Exemples de sites Jekyll
Conclusion
Jekyll n’est pas le nouveau truc hype. C’est un outil éprouvé, fiable, et mature qui fait très bien son job : transformer du texte en site statique. Si ton besoin est simple (blog, doc, portfolio), Jekyll est un choix solide et économe.
Mais en 2025, la concurrence féroce (Hugo, Astro, Eleventy) pousse Jekyll à se réinventer. La bonne nouvelle ? Si tu choisis Jekyll, tu ne seras jamais seul. La communauté est active, la doc complète, et GitHub Pages le supporte en natif.
Et toi, tu utilises déjà un SSG ? Dis-nous ton retour en commentaire !