Bun-Laufzeitumgebung
Bun ist eine schnelle, integrierte JavaScript-Laufzeitumgebung und ein Toolkit: Laufzeitumgebung, Paketmanager, Bundler und Test-Runner.
Wann verwenden
- Bevorzuge Bun für: neue JS/TS-Projekte, Skripte, bei denen Installations-/Ausführungsgeschwindigkeit wichtig ist, Vercel-Deployments mit Bun-Runtime und wenn du einen einheitlichen Toolchain (Ausführen + Installieren + Testen + Bauen) haben möchtest.
- Bevorzuge Node für: maximale Ökosystem-Kompatibilität, Legacy-Tools, die Node voraussetzen, oder wenn eine Abhängigkeit bekannte Bun-Probleme hat.
Verwenden bei: Einführung von Bun, Migration von Node, Schreiben oder Debuggen von Bun-Skripten/Tests oder Konfiguration von Bun auf Vercel oder anderen Plattformen.
Wie es funktioniert
- Laufzeitumgebung: Austauschbare Node-kompatible Laufzeitumgebung (basiert auf JavaScriptCore, implementiert in Zig).
- Paketmanager:
bun installist deutlich schneller als npm/yarn. Die Lockfile ist standardmäßigbun.lock(Text) in aktuellen Bun-Versionen; ältere Versionen verwendetenbun.lockb(binär). - Bundler: Integrierter Bundler und Transpiler für Apps und Bibliotheken.
- Test-Runner: Integrierter
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 npx-artige einmalige Ausführungen. Node-Built-ins werden unterstützt; bevorzuge Bun-APIs, wenn vorhanden, für bessere Leistung.
Vercel: Setze die Runtime in den Projekteinstellungen auf Bun. Build: 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");
},
});
Best Practices
- Committe die Lockfile (
bun.lockoderbun.lockb) 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.