NestJS mit Bun.js betreiben: Einrichtungsleitfaden und Leistungsoptimierungen für 2026
Wie man NestJS auf der Bun-Laufzeitumgebung ausführt, welche Leistungssteigerungen zu erwarten sind und welche Optimierungen sofort angewendet werden sollten. Abdeckt SWC-Kompilierung, Lazy Loading von Modulen, Prisma + Bun, Docker-Konfiguration und Benchmarks im Vergleich NestJS auf Bun vs. NestJS auf Node.js.

Bun Server-Einrichtungs anleitung 2026
Eine zweiteilige Anleitung zum Erstellen produktionsreifer Server mit Bun. Teil 1 behandelt Bun-Runtime-Grundlagen und Fastify-Einrichtung. Teil 2 behandelt NestJS auf Bun und Leistungsoptimierung.
Alle Artikel in diesem Guide
01
Bun.js-Server mit Fastify: von null bis Produktion
Installieren Sie Bun, erstellen Sie einen HTTP-Server, fügen Sie TypeScript-Routen mit Fastify hinzu, behandeln Sie Validierung, verbinden Sie eine Datenbank und deployen Sie mit Docker.
02
NestJS auf Bun.js: Einrichtung und Leistungsoptimierungen
Führen Sie NestJS auf Bun aus, konfigurieren Sie SWC, aktivieren Sie Lazy-Loading-Module, wechseln Sie zum Fastify-Adapter und wenden Sie Leistungsoptimierungen an.
Kurz gesagt
Dieser Leitfaden setzt voraus, dass Sie bereits ein NestJS-Projekt haben oder die Grundlagen des Frameworks verstehen. Er konzentriert sich auf die Bun-spezifische Einrichtung und die Leistungssteigerungen.
NestJS ist ein gut strukturiertes Framework. Bun ist eine schnelle Laufzeitumgebung. Zusammen adressieren sie zwei separate Leistungsengpässe: Framework-Overhead und Laufzeit-Overhead.
NestJS bietet eine modulare Architektur mit Dependency Injection, Decorators, Guards, Interceptors, Pipes und einem starken Plugin-Ökosystem. Die Struktur des Frameworks ist wertvoll für große Anwendungen, bringt aber Start-Overhead mit sich — NestJS muss den Modulgraphen auflösen, Provider instanziieren und den Metadaten-Cache aufbauen, bevor es Requests verarbeiten kann. Auf Node.js dauert dieser Prozess 100-150ms für eine mittelgroße Anwendung. [3][4]
Buns JavaScriptCore-Engine beginnt mit der Ausführung von sinnvollem Code in 8-15ms im Vergleich zu Node.js mit 40-120ms. Wenn Sie NestJS auf Bun ausführen, geschehen sowohl der Laufzeit-Start als auch die NestJS-Modulauflösung schneller. Das Ergebnis: Eine mittlere NestJS-Anwendung, die auf Node.js ~117ms zum Starten benötigt, startet auf Bun in ~48ms — etwa 60% schneller. Für Serverless-Deployments, bei denen Kaltstarts die Benutzererfahrung und Kosten direkt beeinflussen, ist dies erheblich. [1][2]
Die Durchsatzverbesserung ist ebenso bemerkenswert. Benchmarks aus unabhängigen Tests zeigen NestJS + Express auf Bun mit ~41.200 Req/s im Vergleich zu ~16.800 Req/s auf Node.js — eine 2,4x Verbesserung. Mit dem Fastify-Adapter statt Express sind die Zahlen auf beiden Laufzeiten noch höher, aber die relative Verbesserung durch Bun bleibt konsistent. [1]
2.4x faster
~41.200 Req/s auf Bun vs. ~16.800 Req/s auf Node.js mit identischem NestJS-Code. [1]
60% faster
~48ms auf Bun vs. ~117ms auf Node.js für eine mittelgroße NestJS-Anwendung. [1]
20x faster
SWC ersetzt tsc für NestJS-Builds und reduziert die Kompilierung von Minuten auf Sekunden. [3]
10-30x faster
Buns integrierter Paketmanager ersetzt npm für Abhängigkeitsauflösung und Installation. [2]
~20x faster
Buns Jest-kompatibler Test-Runner führt NestJS-Test-Suites deutlich schneller aus. [2]
25-40% smaller
oven/bun:1.3 Basis-Image ~130MB vs. node:22-slim ~180MB. [2]
Die Einrichtung ist für die meisten NestJS-Anwendungen unkompliziert. Bun ist weitgehend Node.js-API-kompatibel, sodass Ihr bestehender NestJS-Code ohne Änderung funktioniert.
Die Bun-Laufzeitumgebung installieren
curl -fsSL https://bun.sh/install | bashAuf Windows:
powershell -c "irm bun.sh/install.ps1|iex"Überprüfen Sie mit bun --version. Sie sollten 1.3.x oder neuer sehen. [2]
Projektabhängigkeiten mit Bun installieren
cd your-nestjs-project
bun installDies ersetzt npm install. Bun liest Ihre bestehende package.json und generiert eine bun.lockb Lockfile. Die meisten NestJS-Abhängigkeiten lassen sich ohne Probleme auflösen. Wenn Sie Probleme mit nativen Addons haben, überprüfen Sie den Kompatibilitätsabschnitt unten. [1][2]
Die NestJS-Anwendung mit Bun starten
bun run src/main.tsWenn Ihre NestJS-App das Standard-TypeScript-Setup (mit tsconfig.json) verwendet, verarbeitet Bun dies nativ. Wenn Sie NestJS-CLI-Skripte wie nest start verwenden, können Sie auch Folgendes ausführen:
bun run nest startFür die Entwicklung mit Hot Reload:
bun --hot src/main.tsBuns Hot Reload bewahrt den Anwendungszustand über Neustarts hinweg, was schneller ist als NestJS CLIs --watch-Flag, das den gesamten Prozess neu startet. [1][2]
Kompatibilitätshinweis
Die meisten NestJS-Anwendungen funktionieren auf Bun ohne Änderungen. Testen Sie Ihre gesamte Route-Suite, insbesondere wenn Sie benutzerdefinierte Decorators, native Addons oder V8-spezifische Reflection-Patterns verwenden. Führen Sie bun test aus, um Ihre Test-Suite zu validieren, bevor Sie in der Produktion auf Bun umsteigen.
SWC (Speedy Web Compiler) ist ein Rust-basierter TypeScript/JavaScript-Compiler, den NestJS nativ unterstützt. Er ist etwa 20x schneller als der Standard-TypeScript-Compiler. In Kombination mit Bun beseitigt er Kompilierungsengpässe vollständig.
SWC-Pakete installieren
bun add -d @swc/cli @swc/coreDies sind die einzigen Pakete, die für die NestJS SWC-Integration erforderlich sind. [3]
SWC in nest-cli.json aktivieren
{
"compilerOptions": {
"builder": "swc",
"typeCheck": true
}
}Die Option typeCheck: true führt tsc im noEmit-Modus neben SWC zur Typvalidierung aus. Wenn Sie schnellere Builds ohne Typprüfung bevorzugen (und sich auf Ihre IDE oder CI verlassen), setzen Sie sie auf false. [3]
NestJS mit SWC + Bun starten
bun run nest start -b swc -wDies kombiniert SWC-Kompilierung mit Buns Laufzeitumgebung und NestJS Watch-Modus. Für Produktions-Builds ohne Watch-Modus:
bun run nest start -b swcDie SWC-Konfigurationsdatei (.swcrc) kann für Decorator-Metadaten, JSX-Unterstützung und andere Optionen angepasst werden. NestJS konfiguriert SWC vorab so, dass es den Framework-Anforderungen entspricht, sodass die meisten Projekte mit den Standardeinstellungen funktionieren. [3]
Zyklische Abhängigkeiten behandeln
SWC behandelt zyklische Imports anders als tsc. Wenn Sie TypeORM, MikroORM oder andere ORMs mit zyklischen Entity-Referenzen verwenden, benötigen Sie möglicherweise den Relation<>-Wrapper-Typ, um Transpilierungsprobleme zu vermeiden:
@Entity()
export class User {
@OneToOne(() => Profile, (profile) => profile.user)
profile: Relation<Profile>;
}Dies verhindert, dass der Typ in den transpilierten Metadaten gespeichert wird, und vermeidet Probleme mit zyklischen Abhängigkeiten. Wenn Ihr ORM keine ähnliche Lösung bietet, können Sie Ihren eigenen Wrapper-Typ definieren. [3]
Leistungsstack
SWC + Bun bietet Ihnen das schnellstmögliche NestJS-Entwicklungserlebnis: Kompilierung in Rust-Geschwindigkeit für Builds, Ausführung in JavaScriptCore-Geschwindigkeit für die Laufzeit und Jest-kompatible Tests, die 20x schneller laufen. Die Kombination beseitigt die beiden größten Quellen von Entwickler-Wartezeiten.
Lazy Loading verschiebt die Modulregistrierung, bis eine Route tatsächlich aufgerufen wird. Für große NestJS-Anwendungen mit vielen Modulen kann dies die Startzeit um 30-40% reduzieren.
Routenbasiertes Lazy Loading aktivieren
// app.module.ts
import { Module } from "@nestjs/common";
import { AppController } from "./app.controller";
import { AppService } from "./app.service";
@Module({
imports: [
{
path: "./admin/admin.module",
lazy: true,
},
{
path: "./reports/reports.module",
lazy: true,
},
],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}Module mit der Markierung lazy: true werden beim Start nicht geladen. Sie werden beim ersten Request geladen und gecacht, der sie auslöst. Nachfolgende Requests verwenden die gecachte Modulinstanz. [4]
LazyModuleLoader für programmatische Steuerung verwenden
import { Injectable } from "@nestjs/common";
import { LazyModuleLoader } from "@nestjs/core";
@Injectable()
export class SomeService {
constructor(
private readonly lazyModuleLoader: LazyModuleLoader,
) {}
async loadHeavyModule() {
const { HeavyModule } = await this.lazyModuleLoader.load(
() => import("./heavy/heavy.module"),
);
return HeavyModule;
}
}Dieser Ansatz gibt Ihnen feingranulare Kontrolle darüber, wann schwere Module geladen werden, was für bedarfsgesteuerte Feature-Aktivierung oder bedingte Modulinitialisierung basierend auf Benutzerkontext nützlich ist. [4]
Erwartete Startverbesserung
Für eine NestJS-Anwendung mit 20+ Modulen:
- Eifriges Laden (Standard): Alle Module beim Start geladen, ~117ms auf Node.js, ~48ms auf Bun - Lazy Loading auf Bun: Nur Kernmodule beim Start geladen, oft ~25-30ms für den initialen Boot, verbleibende Module beim ersten Request geladen
Lazy Loading ist besonders effektiv für Serverless-Deployments, bei denen jeder Funktionsaufruf die vollen Startkosten trägt. [4][5]
Wann Lazy Loading verwenden
Aktivieren Sie Lazy Loading für Module, die nicht bei jedem Request benötigt werden (Admin-Panels, Reporting, Batch-Verarbeitung, Feature Flags). Behalten Sie häufig verwendete Module (Auth, Core-API-Routes) eifrig geladen, um First-Request-Latenzstrafen zu vermeiden.
NestJS verwendet standardmäßig den Express-Adapter. Express ist das am weitesten verbreitete Node.js-Framework, aber nicht das schnellste. NestJS unterstützt auch einen Fastify-Adapter, der deutlich höheren Durchsatz und niedrigere Latenz bietet. Beim Betrieb auf Bun verstärkt der Fastify-Adapter den Leistungsvorteil. [3][5]
Um zu Fastify zu wechseln, installieren Sie den Adapter und aktualisieren Sie Ihre Bootstrap-Funktion in main.ts. Der Rest Ihres NestJS-Codes — Controller, Services, Guards, Interceptors, Pipes — bleibt unverändert. Der Adapter übernimmt das Mapping zwischen NestJS-Abstraktionen und Fastifys Request/Response-Objekten. [3]
Benchmark-Daten zeigen, dass NestJS + Fastify auf Bun wesentlich mehr Durchsatz liefert als NestJS + Express auf Bun. Die Kombination wird für neue Projekte empfohlen, bei denen Sie die Adapter-Wahl kontrollieren. Für bestehende Projekte mit Express erfordert der Wechsel das Testen der Middleware-Kompatibilität (viele Express-Middleware-Pakete haben Fastify-Äquivalente oder funktionieren über @fastify/express). [1][3]
Der Wechsel von Express zu Fastify in NestJS erfordert das Ändern der Bootstrap-Funktion und die Installation von @nestjs/platform-fastify. Controller und Services bleiben unverändert.
Screenshot des Abschnitts fastify-adapterLeistungsvergleich
NestJS + Express auf Bun ist bereits 2,4x schneller als auf Node.js. Der Wechsel zum Fastify-Adapter fügt eine weitere erhebliche Durchsatzverbesserung auf beiden Laufzeiten hinzu. Der Fastify-Adapter ist die empfohlene Wahl für neue NestJS-Projekte im Jahr 2026.
Prisma funktioniert auf Bun ohne Änderungen. Das Prisma-Team hat die Kompatibilität bestätigt, und viele Produktions-Deployments verwenden Prisma + Bun + PostgreSQL. Die Einrichtung ist identisch zu Node.js: Installieren Sie die Pakete, generieren Sie den Client und verwenden Sie ihn in Ihren NestJS-Services. [1][2]
Für den Entwicklungs-Workflow ersetzt bunx prisma das npx prisma zum Ausführen von Prisma-CLI-Befehlen. Der Generate-Befehl erzeugt denselben Client-Code. Der einzige Unterschied ist die Geschwindigkeit: Prisma-CLI-Befehle werden auf Bun schneller ausgeführt, da die JavaScript-Ausführung schneller ist. [2]
Konfiguration
Verwenden Sie bun add prisma @prisma/client zur Installation, bunx prisma generate zur Client-Generierung und importieren Sie PrismaClient wie gewohnt in Ihren NestJS-Services. Connection Pooling, Transaktionen und Migrationen funktionieren identisch zu Node.js.
Eine für NestJS auf Bun optimierte Docker-Konfiguration kombiniert das oven/bun Basis-Image mit SWC-Kompilierung und Multi-Stage-Builds.
Ein Multi-Stage Dockerfile erstellen
FROM oven/bun:1.3 AS base
WORKDIR /app
COPY package.json bun.lockb ./
RUN bun install --frozen-lockfile --production
COPY . .
RUN bun run nest build
EXPOSE 3000
CMD ["bun", "dist/main.js"]Das Image bauen und bereitstellen
docker build -t nestjs-bun-app .
docker run -p 3000:3000 nestjs-bun-appDas resultierende Image ist ca. 25-40% kleiner als ein äquivalentes Node.js-basiertes NestJS-Image, startet schneller und verwendet weniger Laufzeitspeicher. Für Kubernetes-Deployments bedeutet dies schnellere Pod-Scheduling und geringere Ressourcenanforderungen. [1][2]
Produktionstipp
Kombinieren Sie Buns Docker-Image mit SWC-Kompilierung (nest build -b swc) für die schnellstmögliche Build-and-Deploy-Pipeline. Der gesamte Build — Installation, Kompilierung und Image-Erstellung — ist typischerweise in unter 30 Sekunden für eine mittelgroße NestJS-Anwendung abgeschlossen.
Diese Optimierungen funktionieren sowohl auf Node.js als auch auf Bun, potenzieren sich aber mit Buns schnellerer Laufzeit für die besten Ergebnisse.
Response DTOs und class-transformer verwenden
Definieren Sie explizite Response-Formen mit @Expose()-Decorators. Dies reduziert die Payload-Größe und verhindert das Lecken interner Felder. In Kombination mit Fastifys schemabasierter Serialisierung erhalten Sie sowohl Sicherheit als auch Geschwindigkeit.
Routenbasiertes Caching aktivieren
Verwenden Sie NestJS-Decorator @CacheKey() und @CacheTTL() für Routen, die sich selten ändernde Daten zurückgeben. Dies vermeidet redundante Datenbankabfragen und Serialisierungsarbeit.
Datenbankabfragen optimieren
Verwenden Sie Prismas select und include, um nur benötigte Felder abzurufen. Vermeiden Sie N+1-Abfragen durch Eager Loading. Für leseintensive Workloads erwägen Sie das Hinzufügen einer Redis- oder bun:sqlite-Cache-Schicht vor PostgreSQL.
Dependency Injection Scope minimieren
NestJS erstellt eine neue Instanz für jeden Request-scoped Provider. Verwenden Sie den Standard-Scope (Singleton), wo möglich. Markieren Sie Provider nur als Request-scoped, wenn sie Request-spezifischen Zustand halten.
Kompressions-Middleware verwenden
Aktivieren Sie gzip- oder brotli-Kompression für JSON-Antworten. Mit dem Fastify-Adapter verwenden Sie @fastify/compress. Dies kann die Response-Payload-Größe um 60-80% für JSON-Daten reduzieren.
Vor dem Optimieren profilieren
Verwenden Sie Buns eingebautes Bun.write() und console.time() für Ad-hoc-Profilierung. Für tiefere Analysen verwenden Sie clinic.js (Node.js) oder Buns experimentellen Profiler, um tatsächliche Engpässe vor der Optimierung zu identifizieren.
Kernprinzip
Bun macht Ihren Code schneller ausführen. Die obigen Optimierungen machen Ihren Code weniger arbeiten. Die Kombination ist es, wo echte Leistungsgewinne sich potenzieren: schnellere Ausführung von optimiertem Code.
Diese Benchmarks stammen aus unabhängigen Tests, die NestJS mit Express-Adapter auf beiden Laufzeiten vergleichen, mit identischer Hardware und Workloads.
| Comparison point | Requests/sec | Latency (avg) | Throughput (MB/s) |
|---|---|---|---|
| NestJS + Express auf Node.js 18 | 16,874 | 116.9 ms | 4.03 MB |
| NestJS + Express auf Bun | 41,213 | 47.88 ms | 7.91 MB |
| Verbesserung | +144% | -59% | +96% |
Was die Zahlen in der Praxis bedeuten
Eine 2,4x Durchsatzverbesserung bedeutet, dass eine NestJS-API auf Bun auf derselben Hardware 2,4x mehr gleichzeitige Benutzer bedienen kann. Bei Serverless-Deployments übersetzt sich die 60% Latenzreduzierung direkt in niedrigere Kosten. Dies sind Framework-Level-Benchmarks; reale Anwendungen mit Datenbankabfragen werden kleinere, aber immer noch bedeutsame Verbesserungen sehen.
Dies sind die Probleme, auf die Teams beim Betrieb von NestJS auf Bun in der Produktion stoßen.
SWC behandelt zyklische Imports anders als tsc. Wenn Sie TypeORM oder MikroORM mit zyklischen Entity-Referenzen verwenden, verwenden Sie den Relation<>-Wrapper-Typ, um Transpilierungsprobleme zu vermeiden. Dies ist ein NestJS + SWC Problem, kein Bun-Problem, wird aber bei der Kombination von SWC mit Bun sichtbarer. [3]
Einige NestJS CLI-Plugins generieren möglicherweise nicht korrekt Metadaten mit SWC. Wenn Sie @nestjs/swagger oder benutzerdefinierte CLI-Plugins verwenden, die auf TypeScript-Metadaten angewiesen sind, müssen Sie möglicherweise den PluginMetadataGenerator manuell in Monorepo-Setups ausführen. [3]
Sicherer Einführungspfad
Verwenden Sie Bun zuerst als Paketmanager und Test-Runner. Aktivieren Sie dann SWC für die Kompilierung. Wechseln Sie schließlich die Laufzeit zu Bun im Staging und überwachen Sie für 48+ Stunden. Dieser gestaffelte Ansatz minimiert Risiken, erfasst aber die meisten Leistungsvorteile.
Kurze Antworten auf häufige Fragen zum Betrieb von NestJS auf Bun.
Funktioniert NestJS auf Bun ohne Code-Änderungen?
Sollte ich SWC oder Buns natives TypeScript verwenden?
Für die Entwicklung ist Buns natives TypeScript ausreichend und einfacher. Für Produktions-Builds, bei denen Sie kompilierte Ausgabe wünschen, ist SWC die empfohlene Wahl, da NestJS erstklassige SWC-Unterstützung über die CLI bietet. [3]
Ist Lazy Loading die Komplexität wert?
Für Anwendungen mit 20+ Modulen oder Serverless-Deployments, bei denen Kaltstarts wichtig sind, ja. Lazy Loading kann den initialen Start um 30-40% reduzieren. Für kleine Anwendungen oder Always-on-Server ist der Nutzen geringer. [4]
Sollte ich vom Express- zum Fastify-Adapter wechseln?
Kann ich Vitest statt Jest mit NestJS auf Bun verwenden?
Ja. NestJS unterstützt Vitest offiziell als alternativen Test-Runner. In Kombination mit Buns schneller Modulauflösung bietet Vitest ein modernes, schnelles Testing-Erlebnis. Alternativ funktioniert bun test direkt mit NestJS-Testdateien. [3]
Wie sieht es mit NestJS-Microservices auf Bun aus?
NestJS-Microservices (TCP, Redis, NATS, gRPC-Transporte) funktionieren auf Bun. Die Transportschicht verwendet standardmäßige Node.js-Netzwerk-APIs, die Bun unterstützt. Testen Sie jedes Transportprotokoll einzeln, da einige Randfälle haben können. [4]
Quellen, die Aussagen über NestJS auf Bun Benchmarks, SWC-Konfiguration, Lazy Loading und Leistungsoptimierungsmuster unterstützen.
• 1. fishuke/nest-bun — NestJS Express vs Bun Benchmarks (GitHub)
• 2. Tech Insider — Bun vs Node.js: 3x Schneller, aber ist es bereit? [2026]
• 3. NestJS — SWC (schneller Compiler) offizielle Dokumentation
• 5. FYGS.dev — 10 Tipps zur Steigerung Ihrer NestJS-API-Leistung
• 6. Strapi — Bun vs Node.js 2025: Leistung, Geschwindigkeit & Entwickler-Anleitung
Wenn Sie den Betrieb von NestJS auf Bun erwägen, kann PAS7 Studio Ihnen helfen, die Kompatibilität zu prüfen, die optimale Build-Pipeline zu konfigurieren (SWC + Bun), Lazy Loading und Leistungsoptimierungen anzuwenden und eine produktionsreife NestJS-Anwendung mit Docker, CI/CD und Monitoring bereitzustellen.
Wir arbeiten mit NestJS, Bun, Fastify, PostgreSQL und dem gesamten Backend-Stack. Egal, ob Sie eine neue API aufbauen oder eine bestehende NestJS-Anwendung migrieren — wir helfen Ihnen, die Leistungsvorteile ohne Überraschungen zu nutzen.
NestJS auf Bun.js: Einrichtung und Leistungsoptimierungen
Verwandte Artikel
AI SEO / GEO im Jahr 2026: Ihre nächsten Kunden sind nicht Menschen — sondern Agents
Suche verschiebt sich von Klicks zu Antworten. Bots und AI-Agents crawlen, zitieren, empfehlen — und kaufen zunehmend. Erfahren Sie, was AI SEO / GEO bedeutet, warum klassisches SEO nicht mehr reicht und wie PAS7 Studio Marken im agentischen Web sichtbar macht.
Der leistungsstärkste Chip von Apple? M5 Pro und M5 Max brechen Rekorde
Eine Analyse zu Apple M5 Pro und M5 Max im März 2026. Wir zeigen, warum diese Chips als die stärksten professionellen Laptop-SoCs von Apple gelten können, wie sie sich gegen M4 Pro, M4 Max, M1 Pro, M1 Max schlagen und was der Vergleich mit aktuellen Intel- und AMD-Chips zeigt.
Artemis II und der Code, der Menschen zum Mond trägt
Dieser Beitrag erklärt die NASA-Mission Artemis II, die am 1. April 2026 gestartet ist, und zeigt, was sie wirklich über moderne Technik erzählt: Flugsoftware, Backup-Logik, Simulationen, Telemetrie, menschliche Kontrolle und die vorsichtige Rolle von KI in Raumfahrtsystemen.
Automatisches Tagging und Suche für gespeicherte Links
Integration mit GDrive/S3/Notion für automatisches Tagging und schnelle Suche über Such-APIs
Professionelle Entwicklung für Ihr Geschäft
Wir erstellen moderne Web-Lösungen und Bots für Unternehmen. Erfahren Sie, wie wir Ihnen helfen können, Ihre Ziele zu erreichen.