Learn

bun en pratique

Le runtime tout-en-un : package manager, bundler, test runner, et alternative à Node.

bun n'est pas qu'un package manager : c'est un runtime JavaScript complet qui ambitionne de remplacer Node, npm, et plusieurs outils annexes (bundler, test runner) en un seul binaire écrit en Zig.

Ce que bun fait en un seul outil

FonctionnalitébunÉquivalent séparé
Runtime JavaScriptouiNode.js
Package managerouinpm / pnpm
BundlerouiVite / esbuild / Rollup
Test runnerouiVitest / Jest
Transpiler TypeScriptnatiftsc / ts-node

Le résultat : moins de dépendances, moins de configuration, et une vitesse d'exécution souvent supérieure à Node.

Installer bun

Sur macOS et Linux :

shell
curl -fsSL https://bun.sh/install | bash

Sur Windows (PowerShell) :

shell
powershell -c "irm bun.sh/install.ps1 | iex"

Via npm (alternative) :

shell
npm install -g bun

Vérifie l'installation :

shell
bun --version

Les commandes courantes

Installer les dépendances d'un projet existant :

shell
bun install

Ajouter un paquet :

shell
bun add react

Ajouter une devDependency :

shell
bun add -d typescript

Lancer un script :

shell
bun run dev
shell
bun dev

Exécuter un fichier directement (sans node) :

shell
bun run index.ts

Lancer les tests :

shell
bun test

Exécuter une commande ponctuelle :

shell
bunx create-next-app my-app

Supprimer un paquet :

shell
bun remove lodash

Pourquoi bun est si rapide

bun est écrit en Zig, un langage bas niveau sans garbage collector. Il utilise le moteur JavaScript JavaScriptCore (le moteur de Safari), connu pour sa vitesse de démarrage. Son installation de paquets est parallélisée de façon agressive et utilise son propre format de cache binaire (bun.lockb).

Sur les benchmarks publics, bun installe les dépendances 5 à 20 fois plus vite que npm, et 2 à 5 fois plus vite que pnpm.

Le lockfile bun

bun génère un fichier bun.lockb (format binaire, pas lisible). Si tu as besoin d'inspecter les versions épinglées, utilise :

shell
bun pm ls

Compatibilité

bun est compatible avec l'écosystème npm à ~95%. La plupart des paquets fonctionnent sans modification. Les cas problématiques restants : certains paquets natifs (.node bindings) et des outils très spécifiques à Node. En 2026, la compatibilité s'améliore à chaque release.

Documentation officielle bun Compatibilité avec les APIs Node.js

Coche les étapes pour débloquer la suite

Retour au cours