Von lokaler Entwicklung bis zur Produktion: Deployment von TypeScript-Anwendungen im Jahr 2024

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Ihr TypeScript-Code ist bereit, die Welt zu erobern? Zeit, ihn in die Produktion zu schicken

\n\n

Sie haben die perfekte TypeScript-Anwendung geschrieben. Lokal läuft alles rund, die Typen sind streng, der Code ist schön. Aber sobald die Frage aufkommt: "Wie starte ich das auf einem Server?", geraten viele Entwickler ins Stocken. Kommt Ihnen das bekannt vor?

\n\n

Das Deployment von TypeScript-Anwendungen ist keine Rocket Science, aber auch nicht einfach "Ordner kopieren". In diesem Artikel behandeln wir drei grundlegende Ansätze: den klassischen VPS, modernes Docker und Cloud-Plattformen. Sie erfahren, wie Sie Ihr TypeScript-Projekt richtig bauen, die Umgebung konfigurieren und Updates automatisieren. Los geht's!

\n\n

Schritt 1: Vorbereitung der TypeScript-Anwendung für das Deployment

\n\n

Bevor Sie über Server nachdenken, müssen Sie sicherstellen, dass Ihre Anwendung bereit ist, außerhalb der lokalen Umgebung zu laufen. TypeScript ist ein Overlay, das in JavaScript kompiliert wird. Auf dem Server versteht Node.js .ts-Dateien nicht direkt (es sei denn, Sie verwenden ts-node, was für die Produktion nicht empfohlen wird).

\n\n

Projekt-Build

\n\n

Stellen Sie sicher, dass in Ihrer package.json die richtigen Skripte eingetragen sind:

\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

Der Befehl npm run build erstellt einen Ordner dist mit dem fertigen JS-Code. Genau diesen Ordner werden wir deployen.

\n\n

Tipp: Fügen Sie "outDir": "./dist" in tsconfig.json hinzu und konfigurieren Sie exclude für 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

Methode 1: Klassischer VPS – Volle Kontrolle

\n\n

VPS (Virtual Private Server) ist ein gemieteter Server, auf dem Sie der König sind. Geeignet für Projekte, bei denen Sie die volle Kontrolle über die Umgebung benötigen. Wir betrachten das Deployment auf Ubuntu 22.04.

\n\n

Server-Einrichtung

\n\n
    \n
  • Per SSH verbinden: ssh root@Ihre_IP
  • \n
  • Pakete aktualisieren: apt update && apt upgrade -y
  • \n
  • Node.js 20.x installieren: \n curl -fsSL https://deb.nodesource.com/setup_20.x | bash - && apt install -y nodejs\n
  • \n
  • PM2 installieren – den Prozessmanager für Node.js:\n npm install -g pm2\n
  • \n
\n\n

Anwendungs-Deployment

\n\n

Der einfachste Weg ist das Kopieren von Dateien per SCP oder Git. Ich empfehle Git:

\n\n
git clone https://github.com/Ihr-Repository/Projekt.git /var/www/myapp\ncd /var/www/myapp\nnpm install\nnpm run build\npm2 start dist/index.js --name "myapp"\npm2 save\npm2 startup
\n\n

Wichtig: Konfigurieren Sie Nginx als Reverse Proxy, damit die Anwendung über Port 80 erreichbar ist:

\n\n
server {\n    listen 80;\n    server_name Ihre-Domain.de;\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

Vergessen Sie nicht, SSL über Certbot zu konfigurieren – das ist kostenlos und für das moderne Web obligatorisch.

\n\n

Methode 2: Docker – Containerisierung für Reproduzierbarkeit

\n\n

Docker löst das Hauptproblem von VPS: "Auf meinem Rechner funktioniert es!". Der Container enthält alles Notwendige – Node.js, Abhängigkeiten, den gebauten Code. Die Umgebung ist auf jedem Betriebssystem identisch.

\n\n

Dockerfile für TypeScript

\n\n

Wir erstellen einen Multi-Stage-Build – das reduziert das endgültige Image:

\n\n
# Stufe 1: TypeScript-Build\nFROM node:20-alpine AS builder\nWORKDIR /app\nCOPY package*.json ./\nRUN npm ci\nCOPY . .\nRUN npm run build\n\n# Stufe 2: Production-Image                

Blogs

Buchempfehlungen