En el mundo de Javascript es muy importante conocer a Nodejs, ya que mucho del ecosistema de Javascript esta basado en este entorno de ejecución, y cuando hablo de conocer el entorno tambien incluyo tambien a sus alternativas como Deno y Bun.
De hecho este ultimo Bun, es al que voy a estar haciendo un review rapido en este articulo, ya que hasta este momento Bun ya tiene una version estable o 1.0, lo que significa que ya podemos usarlo para crear aplicaciones usando Javascript.
Pero antes de empezar primero veamos que es Bun.sh
¿Que es bun?
- Bun es un entorno de Ejecucion de Javascript. Es decir es un programa que te permite ejecutar tu código de Javascript, fuera del navegador similar a Nodejs o Deno.
- Es un runtime todo en uno (all-in-one runtime), lo que quiere decir que tambien es un bundler de archivos de frontend, similar a webpack o vitejs
- Tambien ofrece su propio instalador de paquetes nativos como npm, aunque es mucho más veloz, incluso a alternativas de npm como pnpm
- Posee un Test Runner incluido que es mucho más rapido que otros test runners como Jest
- Bun hace uso del motor de Webkit en lugar de V8 como Nodejs o Deno
Es decir en la practica Bun, se plantea como un reemplazo a Nodejs, webpack, babel, Deno, y muchas otras
Instalacion de Bun
De momento Bun solo esta disponible en entornos basados en Unix, como Mac OS o Linux, pero si estas en Windows puedes usar WSL.
curl https://bun.sh/install | bash
exec /usr/bin/zsh
bun --help
Instalacion en WSL
Version de Bun
La version que usa este tutorial es: 0.1.1:
bun --version
bun -v
Hello world
mkdir bun-tutorial
cd bun-tutorial
touch http.js
export default {
port: 3000,
fetch(request) {
return new Response("Welcome to the server!");
}
}
bun http.js
bun run http.js
package.json
scripts:
bun add
con bun add, instalas un modulo:
bun add express
bun install
con bun install
instalas todos tus dependencias
Variables de entorno
console.log(Bun.env.PORT) console.log(Bun.env.HELLO)
Bun vs Deno
Ahora conociendo a Bun, es importante tener en cuenta que hay otro proyecto que hace años tambien empezo con la misma idea de ser una alternativa más moderna a Nodejs en diseño, este otro proyecto es Deno, así que tambien creo que es valido ver las diferencias de ambos.
Primero empecemos viendo sus similitudes:
- Deno y bun colocan como prioridades el soporte y compatibilidad de web apis
- ambos soportan typescript por defecto
Luego en cuanto a sus diferencias podemos encontrar:
- bun tambien transpila JSX
- Bun soporta la sintaxis de
require
tanto como losimport
(ES Modules) - bun soporta tambien los modulos nativos de Nodejs, es decir CommonJS y tambien soporta ES Modules, aunque en internamente bun usa los ES MOdules
Por otro lado Bun a diferencia de Deno ha empezado desde cero pero enfocado a soportar las funcionalidades preexistentes de Nodejs, mientras que Deno empezo llendo por su propio lado y al final ha tenido que soportar npm para que pueda aumentar la utilidad a los desarrolladores
Conclusión
Hasta aquí podras ver que Bun tiene muchas caracteristicas interesantes, y sobre todo rápidas que ya vienen por defecto en el entorno de ejecución, sin embargo aun este proyectos es joven, y aun debemos esperar como la comunidad lo adopta en nuevos proyectos, ya que si bien es compatible con muchas paquetes de Nodejs, este tiene que ser escrito en su sintaxis
Por lo que si bien hay muchos proyectos nuevos que usarán bun, los existentes sera muy dificil que se cambien rapidamente.
En lo personal seguire probando este entorno de ejecución estos meses que vienen, y vere como la comunidad lo adopta para poder llegar a considerar usarlo en mis proyectos de producción a futuro.