Überblick
Erstellen Sie einen minimalen HTTP-Server mit Bun.serve, führen Sie ihn lokal aus und erweitern Sie ihn dann durch die Installation eines Pakets.
::: Voraussetzungen: Bun installiert und in Ihrem PATH verfügbar. Siehe Installation für die Einrichtung. :::
Initialisieren Sie ein neues Projekt mit bun init.
bun init my-appSie werden aufgefordert, eine Vorlage auszuwählen, entweder Blank, React oder Library. Für diese Anleitung wählen wir Blank.
bun init my-app✓ Wählen Sie eine Projektvorlage: Blank
- .gitignore
- CLAUDE.md
- .cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc -> CLAUDE.md
- index.ts
- tsconfig.json (für Editor-Autovervollständigung)
- README.mdDies erstellt automatisch ein my-app-Verzeichnis mit einer grundlegenden Bun-App.
Führen Sie die index.ts-Datei mit bun run index.ts aus.
cd my-app
bun run index.tsHello via Bun!Sie sollten eine Konsolenausgabe mit "Hello via Bun!" sehen.
Ersetzen Sie den Inhalt von index.ts durch den folgenden Code:
const server = Bun.serve({
port: 3000,
routes: {
"/": () => new Response('Bun!'),
}
});
console.log(`Server läuft auf ${server.url}`);Führen Sie die index.ts-Datei erneut mit bun run index.ts aus.
bun run index.tsServer läuft auf http://localhost:3000Besuchen Sie http://localhost:3000, um den Server zu testen. Sie sollten eine einfache Seite sehen, die "Bun!" anzeigt.
Sehen Sie TypeScript-Fehler in Bun?
Wenn Sie bun init verwendet haben, hat Bun automatisch die TypeScript-Deklarationen von Bun installiert und Ihre tsconfig.json konfiguriert. Wenn Sie Bun in einem bestehenden Projekt ausprobieren, sehen Sie möglicherweise einen Typfehler beim Bun-Global.
Um dies zu beheben, installieren Sie zuerst @types/bun als Entwicklungsabhängigkeit.
bun add -d @types/bunFügen Sie dann Folgendes zu Ihren compilerOptions in tsconfig.json hinzu:
{
"compilerOptions": {
"lib": ["ESNext"],
"target": "ESNext",
"module": "Preserve",
"moduleDetection": "force",
"moduleResolution": "bundler",
"allowImportingTsExtensions": true,
"verbatimModuleSyntax": true,
"noEmit": true
}
}Installieren Sie das figlet-Paket und seine Typdeklarationen. Figlet ist ein Dienstprogramm zum Konvertieren von Strings in ASCII-Kunst.
bun add figlet
bun add -d @types/figlet # Nur für TypeScript-BenutzerAktualisieren Sie index.ts, um figlet in routes zu verwenden.
import figlet from 'figlet';
const server = Bun.serve({
port: 3000,
routes: {
"/": () => new Response('Bun!'),
"/figlet": () => {
const body = figlet.textSync('Bun!');
return new Response(body);
}
}
});Führen Sie die index.ts-Datei erneut mit bun run index.ts aus.
bun run index.tsServer läuft auf http://localhost:3000Besuchen Sie http://localhost:3000/figlet, um den Server zu testen. Sie sollten eine einfache Seite sehen, die "Bun!" in ASCII-Kunst anzeigt.
____ _
| __ ) _ _ _ __ | |
| _ \| | | | '_ \| |
| |_) | |_| | | | |_|
|____/ \__,_|_| |_(_)Fügen wir etwas HTML hinzu. Erstellen Sie eine neue Datei namens index.html und fügen Sie den folgenden Code hinzu:
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Bun</title>
</head>
<body>
<h1>Bun!</h1>
</body>
</html>Importieren Sie dann diese Datei in index.ts und stellen Sie sie über die Root-/-Route bereit.
import figlet from 'figlet';
import index from './index.html';
const server = Bun.serve({
port: 3000,
routes: {
"/": index,
"/figlet": () => {
const body = figlet.textSync('Bun!');
return new Response(body);
}
}
});
console.log(`Server läuft auf ${server.url}`);Führen Sie die index.ts-Datei erneut mit bun run index.ts aus.
bun run index.tsServer läuft auf http://localhost:3000Besuchen Sie http://localhost:3000, um den Server zu testen. Sie sollten die statische HTML-Seite sehen.
🎉 Herzlichen Glückwunsch! Sie haben einen einfachen HTTP-Server mit Bun erstellt und ein Paket installiert.
Ein Skript ausführen
Bun kann auch "scripts" aus Ihrer package.json ausführen. Fügen Sie das folgende Skript hinzu:
{
"name": "quickstart",
"module": "index.ts",
"type": "module",
"private": true,
"scripts": {
"start": "bun run index.ts"
},
"devDependencies": {
"@types/bun": "latest"
},
"peerDependencies": {
"typescript": "^5"
}
}Führen Sie es dann mit bun run start aus.
bun run startServer läuft auf http://localhost:3000INFO
Leistung — bun run ist ungefähr 28x schneller als npm run (6ms vs 170ms Overhead).