Du développement local à la production : déploiement d'applications TypeScript en 2024

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Votre code TypeScript est prêt à conquérir le monde ? Il est temps de le mettre en production

\n\n

Vous avez écrit l'application TypeScript parfaite. Tout fonctionne localement, les types sont stricts, le code est beau. Mais dès que la question « Comment l'exécuter sur un serveur ? » se pose, de nombreux développeurs sont perplexes. Vous reconnaissez-vous ?

\n\n

Le déploiement d'applications TypeScript n'est pas une rocket science, mais ce n'est pas non plus « il suffit de copier le dossier ». Dans cet article, nous aborderons trois approches principales : le VPS classique, le Docker moderne et les plateformes cloud. Vous apprendrez à compiler correctement un projet TypeScript, à configurer l'environnement et à automatiser le déploiement des mises à jour. C'est parti !

\n\n

Étape 1 : Préparation de l'application TypeScript pour le déploiement

\n\n

Avant de penser aux serveurs, vous devez vous assurer que votre application est prête à fonctionner en dehors de l'environnement local. TypeScript est un sur-ensemble qui se compile en JavaScript. Sur le serveur, Node.js ne comprend pas directement les fichiers .ts (sauf si vous utilisez ts-node, ce qui n'est pas recommandé pour la production).

\n\n

Compilation du projet

\n\n

Assurez-vous que les scripts corrects sont définis dans votre package.json :

\n\n
{\n  "scripts": {\n    "build": "tsc",\n    "start": "node dist/index.js",\n    "dev": "ts-node-dev --respawn src/index.ts"\n  },\n  "main": "dist/index.js"\n}
\n\n

La commande npm run build créera un dossier dist avec le code JS prêt. C'est ce dossier que nous allons déployer.

\n\n

Conseil : ajoutez "outDir": "./dist" dans tsconfig.json et configurez exclude pour node_modules :

\n\n
{\n  "compilerOptions": {\n    "outDir": "./dist",\n    "rootDir": "./src",\n    "target": "ES2020",\n    "module": "commonjs",\n    "strict": true,\n    "esModuleInterop": true\n  },\n  "include": ["src/**/*"],\n  "exclude": ["node_modules", "dist"]\n}
\n\n

Méthode 1 : VPS classique — contrôle total

\n\n

Le VPS (Virtual Private Server) est un serveur loué où vous êtes le maître absolu. Il convient aux projets nécessitant un contrôle total sur l'environnement. Voyons le déploiement sur Ubuntu 22.04.

\n\n

Configuration du serveur

\n\n
    \n
  • Connexion en SSH : ssh root@votre_IP
  • \n
  • Mise à jour des paquets : apt update && apt upgrade -y
  • \n
  • Installation de Node.js 20.x : \n curl -fsSL https://deb.nodesource.com/setup_20.x | bash - && apt install -y nodejs\n
  • \n
  • Installation de PM2 — gestionnaire de processus pour Node.js :\n npm install -g pm2\n
  • \n
\n\n

Déploiement de l'application

\n\n

La méthode la plus simple est de copier les fichiers via SCP ou Git. Je recommande Git :

\n\n
git clone https://github.com/votre-repository/projet.git /var/www/monapp\ncd /var/www/monapp\nnpm install\nnpm run build\npm2 start dist/index.js --name "monapp"\npm2 save\npm2 startup
\n\n

Important : configurez Nginx comme reverse proxy pour que l'application soit accessible sur le port 80 :

\n\n
server {\n    listen 80;\n    server_name votre-domaine.fr;\n\n    location / {\n        proxy_pass http://localhost:3000;\n        proxy_http_version 1.1;\n        proxy_set_header Upgrade $http_upgrade;\n        proxy_set_header Connection 'upgrade';\n        proxy_set_header Host $host;\n        proxy_cache_bypass $http_upgrade;\n    }\n}
\n\n

N'oubliez pas de configurer SSL via Certbot — c'est gratuit et indispensable pour le web moderne.

\n\n

Méthode 2 : Docker — conteneurisation pour la reproductibilité

\n\n

Docker résout le problème principal du VPS : « Ça marche sur ma machine ! ». Le conteneur contient tout le nécessaire — Node.js, dépendances, code compilé. L'environnement est identique sur n'importe quel OS.

\n\n

Dockerfile pour TypeScript

\n\n

Créez une compilation multi-étapes (multi-stage build) — cela réduit l'image finale :

\n\n
# Étape 1 : compilation TypeScript\nFROM node:20-alpine AS builder\nWORKDIR /app\nCOPY package*.json ./\nRUN npm ci\nCOPY . .\nRUN npm run build\n\n# Étape 2 : image de production                

Blogs

Book Recommendations