# Guide de Déploiement ## Options de Déploiement ### 1. GitHub Pages (Gratuit) **Prérequis** : Compte GitHub **Étapes** : 1. Créez un repo GitHub et poussez le code : ```bash git init git add . git commit -m "Initial commit" git branch -M main git remote add origin https://github.com/VOTRE_USERNAME/mario-runner.git git push -u origin main ``` 2. Activez GitHub Pages : - Allez dans Settings → Pages - Source : GitHub Actions - Le workflow `.github/workflows/deploy.yml` est déjà configuré 3. Le jeu sera disponible sur : `https://VOTRE_USERNAME.github.io/mario-runner/` **Note** : GitHub Pages utilise HTTPS automatiquement, donc le gyroscope iOS fonctionnera ! --- ### 2. Netlify (Gratuit, recommandé) **Prérequis** : Compte Netlify **Méthode 1 : Drag & Drop** 1. Build le projet : ```bash npm run build ``` 2. Allez sur [netlify.com](https://www.netlify.com/) 3. Drag & drop le dossier `dist/` sur Netlify 4. Le jeu est déployé instantanément ! **Méthode 2 : CLI** ```bash npm install -g netlify-cli npm run build netlify deploy --prod ``` **Méthode 3 : Git Integration** 1. Poussez sur GitHub 2. Connectez Netlify à votre repo 3. Configuration : - Build command: `npm run build` - Publish directory: `dist` 4. Déploiement automatique à chaque push --- ### 3. Vercel (Gratuit) **Prérequis** : Compte Vercel **Méthode CLI** : ```bash npm install -g vercel vercel ``` Suivez les instructions. **Méthode Git** : 1. Poussez sur GitHub 2. Importez le projet sur [vercel.com](https://vercel.com) 3. Vercel détecte Vite automatiquement 4. Déploiement automatique --- ### 4. Self-Hosting (Serveur personnel) **Avec un serveur Node.js** : 1. Build : ```bash npm run build ``` 2. Servez le dossier `dist/` avec n'importe quel serveur web : **Option A : serve (simple)** : ```bash npm install -g serve serve -s dist -p 80 ``` **Option B : nginx** : ```nginx server { listen 80; server_name votredomaine.com; root /path/to/mario-runner/dist; location / { try_files $uri $uri/ /index.html; } } ``` **Option C : Apache** : ```apache DocumentRoot /path/to/mario-runner/dist Options -Indexes +FollowSymLinks AllowOverride All Require all granted ``` --- ## Configuration PWA Pour que le jeu fonctionne en mode PWA (installable) : ### 1. Créez les icônes Générez les icônes 192x192 et 512x512 : - Utilisez [pwabuilder.com/imageGenerator](https://www.pwabuilder.com/imageGenerator) - Placez dans `public/icons/` ### 2. Service Worker Créez `public/service-worker.js` : ```javascript const CACHE_NAME = 'mario-runner-v1'; const urlsToCache = [ '/', '/index.html', '/assets/index.js', ]; self.addEventListener('install', event => { event.waitUntil( caches.open(CACHE_NAME) .then(cache => cache.addAll(urlsToCache)) ); }); self.addEventListener('fetch', event => { event.respondWith( caches.match(event.request) .then(response => response || fetch(event.request)) ); }); ``` ### 3. Testez l'installation 1. Déployez sur HTTPS (GitHub Pages, Netlify, etc.) 2. Sur mobile : - iOS Safari : Partager → Sur l'écran d'accueil - Android Chrome : Menu → Installer l'application --- ## Test sur Mobile en Local ### Avec HTTPS (requis pour gyroscope iOS) **Option 1 : ngrok** (recommandé) ```bash npm install -g ngrok npm run dev # Dans un autre terminal : ngrok http 3001 ``` Vous obtiendrez une URL HTTPS : `https://xyz123.ngrok.io` **Option 2 : localtunel** ```bash npm install -g localtunnel npm run dev # Dans un autre terminal : lt --port 3001 ``` **Option 3 : Certificat SSL local** Avec `mkcert` : ```bash # Installation brew install mkcert # macOS # ou apt install mkcert # Linux # Créer certificat mkcert -install mkcert localhost 127.0.0.1 ::1 # Modifier vite.config.ts import { defineConfig } from 'vite'; import fs from 'fs'; export default defineConfig({ server: { https: { key: fs.readFileSync('./localhost-key.pem'), cert: fs.readFileSync('./localhost.pem'), }, host: true, port: 3000, }, }); ``` --- ## Optimisations Pré-Déploiement ### 1. Compression des Assets Compressez les images : ```bash npm install -D imagemin imagemin-pngquant ``` ### 2. Minification Déjà géré par Vite en mode production. ### 3. Analyse du Bundle ```bash npm run build npx vite-bundle-visualizer ``` --- ## Vérification Post-Déploiement ### Checklist : - [ ] Le jeu se charge correctement - [ ] Les contrôles clavier fonctionnent (PC) - [ ] Le gyroscope fonctionne (mobile HTTPS) - [ ] Le bouton de saut fonctionne (mobile) - [ ] Les collisions fonctionnent - [ ] Le timer compte correctement - [ ] L'orientation paysage est forcée - [ ] La PWA est installable (optionnel) ### Outils de Test : - **Chrome DevTools** : Device Mode pour simuler mobile - **Lighthouse** : Auditer performance et PWA - **WebPageTest** : Tester vitesse de chargement --- ## Problèmes Courants ### Le jeu ne se charge pas - Vérifiez la console pour erreurs - Vérifiez que tous les assets sont dans `public/` - Vérifiez que le build a réussi : `npm run build` ### Le gyroscope ne fonctionne pas - **iOS** : Nécessite HTTPS obligatoirement - Vérifiez que la permission a été accordée - Testez sur un vrai appareil (pas simulateur) ### Erreur 404 sur les routes Configurez le serveur pour servir `index.html` pour toutes les routes. **Netlify** : Créez `public/_redirects` : ``` /* /index.html 200 ``` **Vercel** : Créez `vercel.json` : ```json { "rewrites": [{ "source": "/(.*)", "destination": "/" }] } ``` --- ## Recommandation Pour ce projet, je recommande **Netlify** : - Gratuit - HTTPS automatique - Déploiement en drag & drop - Bon support PWA - Facile à utiliser Commande rapide : ```bash npm run build npx netlify-cli deploy --prod --dir=dist ```