Skip to main content
Thomas Germain Thomas Germain
Aperçu

Jekyll : Le Générateur de Sites Statiques Simple et Puissant – Guide 2025

11 février 2026
9 min de lecture

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 :

Terminal window
sudo apt-get install ruby-full build-essential zlib1g-dev
# Installer Bundler
gem install bundler
# Vérifier
ruby -v # Doit afficher >= 2.7
bundle -v

Sur macOS avec Homebrew :

Terminal window
brew install ruby
gem install bundler

Attention : 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

Terminal window
# Créer un nouveau site
jekyll new mon-site
# Aller dans le dossier
cd mon-site
# Installer les dépendances
bundle install

Tu 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, JS

Configuration _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 vide
markdown: kramdown
highlighter: rouge
paginate: 5 # articles par page

Options utiles :

theme: minima # thème par défaut, ou chemin vers ton thème custom
plugins:
- 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.000Z
categories: [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 :

_includes/header.html
<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 :

VariableDescription
siteConfiguration globale (site.title, site.baseurl)
pageVariables de la page courante (page.title, page.url)
postDans une boucle de posts, contient le post actuel
paginatorPour 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 date
  • strip_html : enlever les balises HTML
  • truncate: 100 : couper à 100 caractères
  • where:"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: johndoe

Utilisation :

{% assign author = site.data.authors[page.author] %}
<p>Par {{ author.name }} - @{{ author.twitter }}</p>

Développer localement

Terminal window
# Lancer le serveur de dev
bundle exec jekyll serve
# Ou simplement
jekyll serve
# Options utiles
jekyll serve --livereload # rechargement auto
jekyll serve --port 4000 # changer le port
jekyll serve --host 0.0.0.0 # accessible sur le réseau local

Le 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: false

Dé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é)

  1. Pousse ton code source (avec _posts, _layouts, etc.)
  2. GitHub détecte un repo Jekyll et build automatiquement
  3. Le site est servi depuis la branche gh-pages (ou docs/)

Configuration dans .github/workflows/ :

name: GitHub Pages
on:
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: ./_site

Option 2 : Build local + push _site

Terminal window
# Builder en production
JEKYLL_ENV=production bundle exec jekyll build
# Pousser le contenu de _site vers la branche gh-pages
git checkout gh-pages
cp -r _site/* .
git add .
git commit -m "Deploy"
git push origin gh-pages

Custom 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 : main branch (avec GitHub Actions) ou gh-pages branch
  • 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

OutilTypeApprendreVitesseCoûtDynamique
JekyllSSG RubyMoyen⚡⚡⚡⚡⚡GratuitNon (JS only)
HugoSSG GoFacile⚡⚡⚡⚡⚡GratuitNon (JS only)
AstroSSG JSMoyen⚡⚡⚡⚡⚡GratuitOui (îlots)
WordPressCMS PHPTrès facile⚡⚡ (cache)5–20€/moisOui, 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

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 !