Déploiement
Déploiement • Chapitre 2 : Préparation d'un projet avant le déploiement

Vérification du fonctionnement local

Le fléau le plus redouté en ingénierie logicielle est le fameux « Pourtant, ça marchait sur ma machine ! ». Avant toute tentative de mise en production, vous devez auditer rigoureusement votre projet en local dans des conditions identiques à celles du serveur cible.

🏗️
Build de Production

Ne déployez jamais sans avoir testé npm run build localement pour valider le bundler (Vite, Webpack, esbuild).

👁️
Aperçu Bundlé (Preview)

Tester les fichiers minifiés du dossier dist/ avec un serveur statique local (npx serve ou preview).

🔤
Casse des Fichiers (Linux)

Windows/macOS ignorent souvent les majuscules/minuscules dans les imports. Les serveurs Linux crasheront immédiatement.

🧹
État Git Propre

Aucun fichier non suivi, aucun secret exposé, et la branche de production parfaitement alignée.

Audit Interactif : Checklist Avant Déploiement

Auditeur de Risque

Cochez les vérifications que vous avez effectuées en local pour calculer votre Score de Sérénité de Déploiement :

Score de préparation : 33%Risque d'échec élevé ❌
Vérifier l'arbre Git (Status)
Git

Si omis : Des fichiers créés localement ne seront pas présents sur le serveur distant.

git status
Tester le Build de Production
Build

Si omis : Échec immédiat de la CI/CD ou du webhook hébergeur (erreur TypeScript / Minification).

npm run build
Tester l'aperçu statique (Preview)
Runtime

Si omis : Routage SPA brisé (écrans blancs en rechargeant la page) ou chemins d'images 404.

npx serve -s dist
Vérifier l'exclusion des fichiers .env
Sécurité

Si omis : Fuite critique de vos mots de passe de base de données ou clés API sur GitHub.

git check-ignore -v .env
Bannir localhost du code client
Configuration

Si omis : Toutes les requêtes API des vrais utilisateurs échoueront.

grep -rn "localhost" src/ || echo "OK"
Lancer les tests automatisés
Qualité

Si omis : Régression majeure déployée en production sans alerte préalable.

npm test -- --watch=false
1
La Casse des Chemins (Case Sensitivity)

Sur Windows ou macOS par défaut, importer ./components/Navbar alors que le fichier s'appelle navbar.tsx fonctionne sans broncher.

En production sur serveur Linux : Module not found: Can't resolve './components/Navbar'.
2
Les URLs en Dur (Hardcoded Localhost)

Une requête fetch('http://localhost:5000/api') dans votre code frontend fonctionnera sur votre machine car votre navigateur contacte votre propre PC.

Pour un visiteur externe, son navigateur cherchera l'API sur son propre ordinateur, provoquant une erreur net::ERR_CONNECTION_REFUSED.
3
Dépendances en devDependencies

Placer une bibliothèque requise au runtime (comme express, cors ou dotenv) dans la section devDependencies de votre package.json.

Lors d'un npm install --omit=dev en production, le serveur plantera avec Cannot find module 'express'.

Le Test Ultime : Le Test du Clone Vierge

Pour avoir la certitude absolue que votre projet peut être déployé sur un serveur distant sans dépendance fantôme, exécutez ces commandes dans un dossier temporaire :

Script d'Épreuve du Feu (Clean Clone Test)
# 1. Créez un répertoire temporaire vierge
mkdir /tmp/test-deploy && cd /tmp/test-deploy

# 2. Clonez votre propre dépôt Git comme le ferait la plateforme d'hébergement
git clone https://github.com/votre-compte/votre-projet.git .

# 3. Installez strictement les dépendances du fichier package-lock.json
npm ci

# 4. Exécutez le build de production
npm run build

# 5. Lancez l'application en mode production
# Pour une API backend :
NODE_ENV=production npm start
# Pour un frontend statique :
npx serve -s dist