Déployer sur GitHub Pages

GitHub Pages est un service d'hébergement gratuit intégré à GitHub. Il permet de mettre en ligne des applications statiques directement depuis un repository, sans configuration de serveur.

Quand choisir GitHub Pages ?

  • Votre code est déjà sur GitHub — pas besoin d'un compte sur une plateforme supplémentaire
  • Projet personnel, portfolio, application sans backend
  • Vous voulez rester dans l'écosystème GitHub

Pour les projets du cours, Vercel reste l'option recommandée (zéro configuration, déploiement automatique). GitHub Pages est une bonne alternative si vous préférez tout garder sur GitHub.


Étape 1 — Configurer le base path

GitHub Pages héberge votre app sous https://username.github.io/nom-du-repo/ — pas à la racine /. Vite doit en être informé.

Modifiez vite.config.ts :

typescript
import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'

export default defineConfig({
  plugins: [react()],
  base: '/nom-de-votre-repo/', // ⚠️ Remplacez par le nom exact de votre repo
})

Nom exact obligatoire

base doit correspondre exactement au nom du repository GitHub.

  • Repo https://github.com/alice/kana-appbase: '/kana-app/'
  • Repo https://github.com/alice/portfoliobase: '/portfolio/'

Étape 2 — Installer gh-pages et configurer les scripts

Installez le package gh-pages :

bash
npm install --save-dev gh-pages

Ajoutez ces deux scripts dans package.json :

json
{
  "scripts": {
    "dev": "vite",
    "build": "vite build",
    "preview": "vite preview",
    "predeploy": "npm run build",
    "deploy": "gh-pages -d dist"
  }
}

Comment ça fonctionne :

  • predeploy s'exécute automatiquement avant deploy — il build le projet
  • deploy pousse le contenu de dist/ sur une branche gh-pages

Étape 3 — Déployer

bash
npm run deploy

Cette commande :

  1. Build l'application (npm run build)
  2. Crée ou met à jour la branche gh-pages
  3. Pousse le contenu de dist/ sur cette branche

Succès

Votre site sera accessible à https://username.github.io/nom-du-repo/


Étape 4 — Activer GitHub Pages

La première fois seulement, activez GitHub Pages dans les paramètres du repo :

  1. Allez sur votre repository GitHub
  2. Cliquez sur Settings
  3. Dans le menu latéral, cliquez sur Pages
  4. Sous Source, choisissez :
    • Branch : gh-pages
    • Folder : / (root)
  5. Cliquez sur Save

Votre app sera disponible en 1-2 minutes à l'URL indiquée.

Pourquoi faut-il configurer 'base' dans vite.config.ts pour GitHub Pages ?


Gérer les routes React Router

Si vous utilisez React Router, les URLs directes (ex: /quiz) retournent une 404 — GitHub Pages cherche un fichier /quiz/index.html qui n'existe pas.

Solution : HashRouter

Remplacez BrowserRouter par HashRouter :

tsx
// Avant
import { BrowserRouter } from 'react-router-dom';

// Après
import { HashRouter } from 'react-router-dom';

function App() {
  return (
    <HashRouter>
      {/* Vos routes */}
    </HashRouter>
  );
}

Les URLs deviennent :

  • https://username.github.io/kana-app/#/
  • https://username.github.io/kana-app/#/quiz
  • https://username.github.io/kana-app/#/study

Astuce

Le # dans l'URL est moins propre que BrowserRouter, mais c'est la solution la plus simple et la plus fiable pour GitHub Pages. Pas de configuration supplémentaire.

Pourquoi utiliser HashRouter plutôt que BrowserRouter sur GitHub Pages ?


Mises à jour

Pour redéployer après des modifications :

bash
# Faites vos modifications, puis :
git add .
git commit -m "Update app"
git push origin main

# Redéployez
npm run deploy

Attention

Contrairement à Vercel, GitHub Pages ne se déploie pas automatiquement à chaque push. Vous devez relancer npm run deploy manuellement.


Dépannage

Page blanche après déploiement → Vérifiez que base dans vite.config.ts correspond exactement au nom du repo.

Erreur 404 sur les routes → Passez de BrowserRouter à HashRouter (voir section ci-dessus).

npm run deploy échoue → Vérifiez que gh-pages est installé (npm install --save-dev gh-pages) et que le build fonctionne (npm run build).

Les modifications ne s'affichent pas → GitHub Pages peut mettre 1-2 minutes à se mettre à jour. Forcez le rechargement avec Ctrl+Shift+R.


Récapitulatif

Checklist de déploiement

  • [ ] base configuré dans vite.config.ts (nom exact du repo)
  • [ ] gh-pages installé (npm install --save-dev gh-pages)
  • [ ] Scripts predeploy et deploy dans package.json
  • [ ] npm run build fonctionne sans erreur
  • [ ] HashRouter si vous utilisez React Router
  • [ ] GitHub Pages activé dans Settings → Pages (branche gh-pages)
  • [ ] npm run deploy lancé

Ressources