bun no es solo un package manager: es un runtime JavaScript completo que aspira a reemplazar Node, npm, y varias herramientas secundarias (bundler, test runner) en un solo binario escrito en Zig.
Lo que bun hace en una sola herramienta
| Funcionalidad | bun | Equivalente separado |
|---|---|---|
| Runtime JavaScript | sí | Node.js |
| Package manager | sí | npm / pnpm |
| Bundler | sí | Vite / esbuild / Rollup |
| Test runner | sí | Vitest / Jest |
| Transpilador TypeScript | nativo | tsc / ts-node |
El resultado: menos dependencias, menos configuración, y una velocidad de ejecución frecuentemente superior a Node.
Instalar bun
En macOS y Linux:
En Windows (PowerShell):
Via npm (alternativa):
Verifica la instalación:
Comandos habituales
Instalar las dependencias de un proyecto existente:
Añadir un paquete:
Añadir una devDependency:
Lanzar un script:
Ejecutar un archivo directamente (sin node):
Lanzar los tests:
Ejecutar un comando puntual:
Eliminar un paquete:
Por qué bun es tan rápido
bun está escrito en Zig, un lenguaje de bajo nivel sin recolector de basura. Utiliza el motor JavaScript JavaScriptCore (el motor de Safari), conocido por su rápido arranque. Su instalación de paquetes está paralelizada de forma agresiva y usa su propio formato de caché binario (bun.lockb).
En benchmarks públicos, bun instala dependencias entre 5 y 20 veces más rápido que npm, y entre 2 y 5 veces más rápido que pnpm.
El lockfile de bun
bun genera un archivo bun.lockb (formato binario, no legible por humanos). Si necesitas inspeccionar las versiones fijadas, usa:
Compatibilidad
bun es compatible con el ecosistema npm en aproximadamente un 95%. La mayoría de los paquetes funcionan sin modificaciones. Los casos problemáticos que quedan: algunos paquetes nativos (.node bindings) y herramientas muy específicas de Node. En 2026, la compatibilidad mejora con cada nueva versión.