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 JavaScript | oui | Node.js |
| Package manager | oui | npm / pnpm |
| Bundler | oui | Vite / esbuild / Rollup |
| Test runner | oui | Vitest / Jest |
| Transpiler TypeScript | natif | tsc / 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 :
Sur Windows (PowerShell) :
Via npm (alternative) :
Vérifie l'installation :
Les commandes courantes
Installer les dépendances d'un projet existant :
Ajouter un paquet :
Ajouter une devDependency :
Lancer un script :
Exécuter un fichier directement (sans node) :
Lancer les tests :
Exécuter une commande ponctuelle :
Supprimer un paquet :
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 :
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.