
Problem
Moderne Webapplikationen in einer Node.js Umgebung aufzusetzen, benötigt oftmals unnötig viel Zeit und Nerven.
Es müssen die gewünschten Bundler und Transpiler installiert und konfiguriert werden. Bei TypeScript-Projekten kommen zusätzliche Abhängigkeiten und Konfigurationen hinzu.
Bestenfalls wollt ihr eure Komponenten auch testen. Es sollte daher auch ein Testframework (z. B. Jest) installiert und aufgesetzt werden.
Wäre es nicht schön, wenn die JavaScript-Runtime das nicht schon alles out of the box könnte?
Lösung
Bun ist eine neue JavaScript-Runtime, die als All-in-one-Toolkit fungiert. Bun kann Code ausführen, builden, testen und debuggen. Node.js ist seit der Veröffentlichung vor 14 Jahren immer weiter gewachsen, leider ohne zentrale Planung. Dadurch wurde die Runtime komplexer und langsamer.
Bun verwendet im Gegensatz zu Node.js V8-Engine, die deutlich performantere JavaScriptCore Engine.
Mit Bun lassen sich Projekte wesentlich einfacher aufbauen und schneller ausführen/bauen, ohne auf bekannte Node.js Features zu verzichten. Ihr könnt mit Bun weiterhin dieselben Web-APIs, integrierten Module (z. B. fs, path etc.) und npm packages inkl. package.json verwenden. Ein Package Manager ist mit Bun auch nicht mehr nötig.
Bun stellt auch eine "bash–like" Shell zur Verfügung. Hiermit lassen sich CLI/REPL Tools in Java- bzw. TypeScript implementieren.
Installation mit Homebrew
brew tap oven-sh/bun
brew install bun
Eine Installation per curl, docker und npm ist auch möglich.
Kompilierungsgeschwindigkeit von Bun im Vergleich

CLI-Befehle (Auszug)
bun init – erstellt ein leeres bun-Projekt
bun run start – führt das start-Skript aus
bun run <file> – transpiliert JavaScript / TypeScript files
bun install <package> – installiert ein package
bun build ./index.tsx – baut das Projekt
bun test – führt die Tests aus