Intégré au cœur de la plus grande plateforme de développement au monde, GitHub Pages vous permet d'héberger gratuitement vos sites web, portfolios et documentations directement depuis votre dépôt Git. Découvrez comment automatiser le build avec GitHub Actions et éviter les deux pièges célèbres : base-href et le fichier .nojekyll.
Disponible gratuitement pour chaque compte et dépôt GitHub public, avec certificat SSL HTTPS inclus d'office.
Automatisez le build (npm ci && npm run build) et la publication sur le CDN GitHub à chaque push.
Un fichier vide indispensable pour empêcher le moteur Jekyll d'ignorer vos fichiers et dossiers commençant par un underscore.
Le site vit dans /nom-du-depot/ : vos balises doivent être configurées avec base-href pour trouver les styles.
name: Déploiement automatique sur GitHub Pages
on:
push:
branches: [ main ] # Déclenché à chaque push sur la branche main
permissions:
contents: read
pages: write
id-token: write
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: 1. Récupération du code source
uses: actions/checkout@v4
- name: 2. Configuration de Node.js
uses: actions/setup-node@v4
with:
node-version: 20
cache: 'npm'
- name: 3. Installation et compilation propre
run: |
npm ci
npm run build -- --base-href=/mon-depot/
touch dist/.nojekyll
- name: 4. Déploiement sur GitHub Pages
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./distContrairement à Vercel où votre projet est servi à la racine absolue du domaine, l'URL GitHub Pages d'un projet prend la forme suivante :
Si votre fichier index.html demande <link href="/styles.css"> (avec un slash initial), le navigateur va chercher le fichier sur https://<votre-pseudo>.github.io/styles.css, ce qui échouera avec une erreur 404 car le fichier se trouve dans le sous-dossier /mon-projet/styles.css !
ng build --base-href=/nom-du-depot/.base: '/nom-du-depot/' dans votre fichier vite.config.ts. À l'origine, GitHub Pages a été conçu pour faire fonctionner un générateur de blog en Ruby nommé Jekyll.
_ (comme _app/, _next/ ou _astro/)..nojekyll à la racine du dossier publié (ex: touch dist/.nojekyll). Cela ordonne immédiatement à GitHub Pages de désactiver Jekyll et de servir les fichiers bruts. GitHub distingue deux types de pages selon le nom de votre dépôt :
| Type | Nom du Dépôt | URL Publique Résultante | Sous-dossier ? |
|---|---|---|---|
| Site Utilisateur Principal | pseudo.github.io | https://pseudo.github.io/ | Non (Racine) |
| Site de Projet | portfolio ou mon-app | https://pseudo.github.io/mon-app/ | Oui (Sous-chemin) |
| Critère | GitHub Pages | Vercel | Netlify |
|---|---|---|---|
| Intégration Git | 100% Native (au cœur de GitHub) | Via GitHub App Webhook | Via GitHub App Webhook |
| Single Page Applications (SPA) | Complexe (nécessite astuce 404.html) | Natif (Rewrites automatiques) | Natif (Fichier _redirects) |
| Sous-dossier d'URL | Oui (/nom-depot/) | Non (Racine du sous-domaine) | Non (Racine du sous-domaine) |
| Fonctions Serverless | Impossible (Statique pur uniquement) | Oui (Serverless & Edge) | Oui (Netlify Functions) |