Bun-Laufzeitumgebung
Bun ist eine schnelle integrierte JavaScript-Laufzeitumgebung und Toolchain: Laufzeitumgebung, Paketmanager, Bundler und Testausführer.
Wann verwenden
- Bun bevorzugen für: neue JS/TS-Projekte, Skripte bei denen Installations-/Ausführungsgeschwindigkeit zählt, Vercel-Deployments mit Bun-Runtime und wenn eine einzige Toolchain gewünscht ist (Ausführen + Installieren + Testen + Bauen).
- Node bevorzugen für: maximale Ökosystemkompatibilität, alte Toolchains die Node voraussetzen oder wenn eine Abhängigkeit bekannte Bun-Probleme aufweist.
Verwenden bei: Einführung von Bun, Migration von Node, Schreiben oder Debuggen von Bun-Skripten/Tests oder Konfigurieren von Bun auf Vercel oder anderen Plattformen.
Wie es funktioniert
- Laufzeitumgebung: Drop-in Node-kompatible Runtime (basiert auf JavaScriptCore, implementiert in Zig).
- Paketmanager:
bun installist signifikant schneller als npm/yarn. Die Sperrdatei ist standardmäßigbun.lock(Text) im aktuellen Bun; ältere Versionen verwendetenbun.lockb(binär). - Bundler: Integrierter Bundler und Transpiler für Apps und Bibliotheken.
- Testausführer: Integriertes
bun testmit Jest-ähnlicher API.
Migration von Node: Ersetze node script.js durch bun run script.js oder bun script.js. Führe bun install anstelle von npm install aus; die meisten Pakete funktionieren. Verwende bun run für npm-Skripte; bun x für einmalige npx-artige Ausführungen. Node Built-ins werden unterstützt; bevorzuge Bun-APIs wo vorhanden für bessere Leistung.
Vercel: Setze die Laufzeitumgebung in den Projekteinstellungen auf Bun. Bauen: bun run build oder bun build ./src/index.ts --outdir=dist. Installieren: bun install --frozen-lockfile für reproduzierbare Deployments.
Beispiele
Ausführen und Installieren
# Abhängigkeiten installieren (erzeugt/aktualisiert bun.lock oder bun.lockb)
bun install
# Ein Skript oder eine Datei ausführen
bun run dev
bun run src/index.ts
bun src/index.ts
Skripte und Umgebungsvariablen
bun run --env-file=.env dev
FOO=bar bun run script.ts
Testen
bun test
bun test --watch
// test/example.test.ts
import { expect, test } from "bun:test";
test("add", () => {
expect(1 + 2).toBe(3);
});
Runtime-API
const file = Bun.file("package.json");
const json = await file.json();
Bun.serve({
port: 3000,
fetch(req) {
return new Response("Hello");
},
});
Bewährte Verfahren
- Checke die Sperrdatei (
bun.lockoderbun.lockb) ein für reproduzierbare Installationen. - Bevorzuge
bun runfür Skripte. Für TypeScript führt Bun.tsnativ aus. - Halte Abhängigkeiten aktuell; Bun und das Ökosystem entwickeln sich schnell weiter.