Un hombre sabio me dijo una vez: "Cuando empieces a comer Bun (panecillo), Node.js se sentirá insípido".
Pero ¿por qué es eso relevante? JavaScript se volvió mucho más rápido con un nuevo entorno de ejecución de JavaScript llamado Bun, que ahora está listo para producción con su versión 1.0.
¿Cómo y por qué es más rápido que Node.js? Me vienen a la mente muchas preguntas.
Responderé algunas de esas preguntas en este artículo. Y lo haré rápidamente, ya que ahora soy más rápido, al igual que JavaScript, que se prepara con Bun 1.0.
Bun es un conjunto de herramientas rápidas todo en uno para ejecutar, crear, probar y depurar JavaScript y TypeScript, desde un único archivo hasta una aplicación full-stack.
A continuación algunas cosas que podemos hacer con Bun:
Ejecuta tu código más rápido con Bun
Ahora no necesitamos herramientas como npm
, pnpm
o yarn
porque Bun es 17 veces mas rápido. Eche un vistazo a los datos mostrados a continuación:
Bun tarda solo 0,36 segundos en compilar su código, mientras que tarda unos 6,44 segundos en el caso de pnpm, 10,58 segundos con npm y 12,08 segundos con yarn.
Bun soporta hot reloading
Bun soporta hot reloading (recarga en caliente) desde el primer momento, por lo que no necesita herramientas como Nodemon. Actualizará automáticamente el servidor cuando se ejecute JavaScript o TypeScript.
Puede reemplazar el comando npm run
con bun run
para ahorrar más de 150 ms milisegundos cada vez que ejecuta un comando.
Aquí un gráfico completo:
Según el cuadro anterior, el uso de npm
tarda unos 176 ms en ejecutarse, yarn
tarda unos 131 ms. En el caso de pnpm
, se necesitan 259 ms. Sin embargo, en el caso de Bun, se necesitan unos 7 ms. Eso es rápido, ¿no?
Bun es un empaquetador JavaScript
Bun también es un empaquetador de JavaScript con el mejor rendimiento de su clase y una API compatible con ESBuild, por lo que no necesitamos cosas como:
- ESBuild
- Webpack
- Parcel, .parcelrc
- Rollup, rollup.config.js
Bun ahora soporta Next.js, Remix, Nuxt, Astro, SvelteKit, Nest, SolidStart y Vite.
Bun es compatible con ESM y CommonJS
Otra gran característica de Bun es que podemos usar módulos ES6 y CommonJs juntos en el mismo archivo, lo que no era posible en Node.js.
Puedes usar import
y require()
en el mismo archivo:
Aparte de eso, Bun tiene soporte integrado para las API estándar web que están disponibles en los navegadores, como fetch
, junto con la propia API de Bun como Bun.file()
para leer un archivo de forma diferida y Bun.Write()
para escribir un archivo al sistema de archivos local, que es mucho más simple que Node.js.
Ejemplo Bun.file()
El código anterior leerá el contenido de un archivo package.json
y transferirá su contenido a una nueva variable llamada contenido
.
Ejemplo Bun.write()
En el código anterior, Bun.write()
escribirá la cadena "<html/>"
, o copiará el contenido del archivo home.html
en el archivo index.html
. Si tenemos que recuperar datos, obtendrá los resultados de una API web externa y escribirá el contenido en un archivo index.html
.
¿Por que Bun es tan rápido?
Bun es rápido porque usa el motor JavaScriptCore, mientras que Node.js usa el motor JavaScript V8. El primero se ha optimizado para un tiempo de inicio más rápido.
Si deseas hacer las cosas más rápido, debería considerar reemplazar Node.js con Bun.
¿Cómo empezar a usar Bun?
Puedes instalar Bun en sistemas MacOS y Linux usando npm
:
Ahora ya está todo listo. Para instalar un paquete npm
, haz esto:
Para iniciar una aplicación, haz esto:
Para todo lo que pueda necesitar solo reemplace npm
con bun
.
Sin embargo, Bun sólo está listo para producción en los sistemas operativos MacOS y Linux. La versión de Windows aún es experimental. Por el momento, solo se admite el entorno de ejecución de JavaScript para Windows, y no el administrador de paquetes, el empaquetador ni el entorno de pruebas. Puedes leer más al respecto aquí.
Conclusión
Este artículo muestra cómo puedes utilizar Bun como alternativa a Node.js y acelerar su tiempo de desarrollo.
También puedes ver mi vídeo sobre El asesino de Node.js está aquí — Primer vistazo a Bun 1.0 (en inglés).
Gracias por leer.