Runtime Bun
Bun est un runtime et toolkit JavaScript tout-en-un rapide : runtime, gestionnaire de paquets, bundler et exécuteur de tests.
Quand l'utiliser
- Préférez Bun pour : nouveaux projets JS/TS, scripts où la vitesse d'installation/exécution compte, déploiements Vercel avec le runtime Bun, et quand vous voulez une chaîne d'outils unique (exécution + installation + test + build).
- Préférez Node pour : une compatibilité maximale avec l'écosystème, des outils existants qui supposent Node, ou lorsqu'une dépendance a des problèmes connus avec Bun.
Utilisez-le : pour adopter Bun, migrer depuis Node, écrire ou déboguer des scripts/tests Bun, ou configurer Bun sur Vercel ou d'autres plateformes.
Comment ça fonctionne
- Runtime : Runtime compatible avec Node (fonctionne avec JavaScriptCore, implémenté en Zig).
- Gestionnaire de paquets :
bun installest significativement plus rapide que npm/yarn. Le fichier lock estbun.lock(texte) par défaut dans Bun actuel ; les versions plus anciennes utilisaientbun.lockb(binaire). - Bundler : Bundler et transpileur intégrés pour applications et bibliothèques.
- Exécuteur de tests :
bun testintégré avec une API similaire à Jest.
Migration depuis Node : Remplacez node script.js par bun run script.js ou bun script.js. Exécutez bun install à la place de npm install ; la plupart des paquets fonctionnent. Utilisez bun run pour les scripts npm ; bun x pour les exécutions uniques de type npx. Les éléments intégrés de Node sont pris en charge ; préférez les API Bun lorsqu'elles existent pour de meilleures performances.
Vercel : Définissez le runtime sur Bun dans les paramètres du projet. Build : bun run build ou bun build ./src/index.ts --outdir=dist. Install : bun install --frozen-lockfile pour des déploiements reproductibles.
Exemples
Exécuter et installer
# Installer les dépendances (crée/met à jour bun.lock ou bun.lockb)
bun install
# Exécuter un script ou fichier
bun run dev
bun run src/index.ts
bun src/index.ts
Scripts et env
bun run --env-file=.env dev
FOO=bar bun run script.ts
Tests
bun test
bun test --watch
// test/example.test.ts
import { expect, test } from "bun:test";
test("add", () => {
expect(1 + 2).toBe(3);
});
API Runtime
const file = Bun.file("package.json");
const json = await file.json();
Bun.serve({
port: 3000,
fetch(req) {
return new Response("Hello");
},
});
Bonnes pratiques
- Commitez le fichier lock (
bun.lockoubun.lockb) pour des installations reproductibles. - Préférez
bun runpour les scripts. Pour TypeScript, Bun exécute.tsnativement. - Gardez les dépendances à jour ; Bun et l'écosystème évoluent rapidement.