Cómo migrar Astro a Bun en Cloudflare Pages (guía 2026)
Migra tu proyecto de Astro de Node.js a Bun en Cloudflare Pages. Guía paso a paso con comandos de compilación, configuración de BUN_VERSION, verificación y resolución de problemas.
Actualizado Publicado 11 min de lectura

Cambiar Node.js y npm por Bun en Cloudflare Pages puede reducir los tiempos de instalación de dependencias entre 10 y 30 veces y recortar entre un 15 y un 30 % las compilaciones con mucha E/S. Bun es un runtime de compilación compatible en Cloudflare Pages, no un experimento. Si tienes un sitio estático de Astro con Node.js y npm, esta guía cubre la migración completa. Tanto si creaste un blog gratis con Astro y Cloudflare como si migraste de WordPress a Astro, el cambio a Bun es el siguiente paso para conseguir despliegues más rápidos.
Nota sobre el vídeo
Requisitos previos y compatibilidad
Compatibilidad de versiones de Astro
Esta migración funciona igual de Astro v3 a v7 en sitios estáticos (SSG). Astro 7 añadió un compilador en Rust y Rolldown (Vite 8), lo que se traduce en compilaciones más rápidas. Puedes leer más sobre el rendimiento de compilación de Astro 7 para conocer los detalles. Los pasos de la migración a Bun en sí no han cambiado entre versiones de Astro.
Solo sitios estáticos
Usuarios de SSR: una advertencia importante
Si usas @astrojs/cloudflare para el renderizado del lado del servidor con Astro 6+, Cloudflare Pages ya no es compatible con despliegues SSR. Desde @astrojs/cloudflare v13, solo Cloudflare Workers es compatible con el renderizado bajo demanda. Los sitios estáticos no se ven afectados por este cambio.
SSR en Cloudflare Pages ya no es compatible
@astrojs/cloudflare para SSR con Astro 6+, debes desplegar en Cloudflare Workers, no en Pages. Los sitios estáticos no se ven afectados.1. Instala Bun
macOS / Linux (curl)
curl -fsSL https://bun.sh/install | bashmacOS (Homebrew)
brew install bunWindows (PowerShell)
powershell -c "irm bun.sh/install.ps1 | iex"Con npm (universal)
npm install -g bunDespués de instalarlo, verifica que funciona:
bun --versionDeberías ver 1.3.x o superior. Si obtienes command not found, reinicia tu terminal o ejecuta source ~/.bashrc / source ~/.zshrc.
Verifica tu instalación
bun --version. Deberías ver 1.3.x o superior. Si está por debajo de 1.1.x, conviene actualizar para mantener la compatibilidad con la optimización de imágenes de Sharp.Puedes consultar Bun vs NPM, Yarn, PNPM y otros para una comparación detallada de Bun frente a otros gestores de paquetes.
2. Elimina los archivos de bloqueo existentes
Elimina el lockfile del gestor de paquetes que estuvieras usando antes:
# Si usabas npm:
rm package-lock.json
# Si usabas pnpm:
rm pnpm-lock.yaml
# Si usabas Yarn:
rm yarn.lockBun crea su propio lockfile: bun.lock (formato de texto, predeterminado desde ~v1.2) o bun.lockb (binario). Se genera en el próximo bun install.
Confirma tu lockfile
bun install --frozen-lockfile de forma predeterminada. Si bun.lock o bun.lockb no están confirmados en tu repositorio, la compilación fallará con un error de discrepancia del lockfile.3. Instala las dependencias con Bun
Ejecuta bun install para instalar las dependencias de tu proyecto:
bun installEsto lee tu package.json y descarga los paquetes mucho más rápido que npm (normalmente de 10 a 30 veces en instalaciones limpias). La mayor ventaja es el tiempo de instalación de dependencias en CI/CD.
Sharp, la biblioteca de optimización de imágenes de Astro, funciona con Bun de forma nativa. Estuvo rota en 2023-2024, pero se corrigió desde Bun ~1.1.x. No hacen falta workarounds.
Si más adelante necesitas actualizar los paquetes a sus últimas versiones, mira cómo actualizar paquetes con Bun.
4. Prueba tu proyecto de Astro en local
Inicia el servidor de desarrollo para asegurarte de que todo funciona:
bun run devAbre http://localhost:4321 y verifica que tus páginas cargan correctamente. Después, prueba la compilación de producción:
bun run buildEl directorio dist/ debería crearse sin errores.
Entendiendo el flag --bun
Hay una distinción que la mayoría de las guías omiten:
bun run dev/bun run buildejecuta Astro a través de la capa de compatibilidad con Node.js de Bun. Es estable y está recomendado para la mayoría de los proyectos.bun run --bun dev/bun run --bun buildejecuta Astro usando el runtime real de Bun. Es más rápido, pero algunas integraciones pueden tener asperezas.
El flag --bun
bun run build (modo de compatibilidad con Node) para mayor estabilidad. Si tu proyecto compila sin problemas y quieres más velocidad, prueba bun run --bun build. Si te encuentras con ERR_HTTP_SOCKET_ASSIGNED u otros errores específicos de Node, vuelve al modo de compatibilidad. Seguirá siendo más rápido que npm.Si quieres exprimir más velocidad en tus compilaciones, consulta las guías sobre el rendimiento de compilación de Astro 7 y cómo optimizar la velocidad de compilación de Astro.
5. Configura Cloudflare Pages para Bun
Inicia sesión en el panel de Cloudflare y ve a la configuración de tu proyecto. Tendrás que actualizar el comando de compilación y, opcionalmente, fijar tu versión de Bun. Si aún no has configurado Cloudflare Pages, mira primero cómo desplegar un sitio de Astro en Cloudflare Pages.
Actualiza el comando de compilación
Cambia el comando de compilación de Cloudflare Pages a:
Recomendado (compat. Node)
bun run buildRuntime de Bun (más rápido)
bun run --bun buildEl recomendado bun run build usa la capa de compatibilidad con Node.js de Bun, que es estable y más rápida que npm. La variante --bun usa el runtime nativo de Bun. Es más rápida, pero puede no funcionar con todas las integraciones. Empieza con la opción recomendada.
Fija tu versión de Bun con BUN_VERSION
En Cloudflare Dashboard → Settings → Environment variables, añade:
BUN_VERSION=1.3.14Sustituye 1.3.14 por la última versión estable de Bun. Fijar la versión evita roturas inesperadas cuando Cloudflare actualiza la versión predeterminada de Bun en su imagen de compilación.
Evita BUN_VERSION=latest
BUN_VERSION=latest provoca un error 403 durante la compilación. El script de instalación de Bun sufre problemas de rate-limiting al obtener la lista de versiones a través de la imagen de compilación de Cloudflare (que usa asdf internamente). Fija siempre una versión concreta como 1.3.14.Versiones del sistema de compilación de Cloudflare Pages (v2 frente a v3)
Cloudflare Pages tiene tres versiones del sistema de compilación:
- v3: predeterminada para proyectos nuevos. Bun 1.2.15, Node 22.16.0, Ubuntu 22.04.2.
- v2: Bun 1.1.33 y Node 18.17.1 por defecto. Migrará automáticamente a v3 para febrero de 2027.
- v1: obsoleta. Migrará automáticamente a v3 para septiembre de 2026.
Comprueba tu sistema de compilación
El plan gratuito de Cloudflare Pages te da 500 compilaciones al mes, 1 compilación simultánea y un límite estricto de 20 minutos por compilación. Las instalaciones más rápidas de Bun ayudan a que los proyectos grandes se mantengan por debajo de ese límite. No hay coste adicional por usar Bun en lugar de Node.
6. Despliega en Cloudflare
Confirma tus cambios y súbelos a tu repositorio Git:
git add .
git commit -m "Migrate to Bun"
git pushCloudflare detectará el push y empezará a compilar con la nueva configuración de Bun. Puedes seguir el progreso en Cloudflare Dashboard → Pages → tu proyecto → Deployments.
7. Verifica el despliegue
No des por hecho que funcionó. Comprueba lo siguiente:
- El log de compilación muestra
bun install vX.X.X(lo que confirma que fue Bun, y no npm, quien ejecutó la instalación) - La compilación termina sin errores
- El sitio carga correctamente en tu URL de producción
- No hay errores de hidratación ni advertencias nuevas en la consola de las DevTools del navegador
Cómo verificarlo:
- Log de compilación: Cloudflare Dashboard → Pages → Deployments → haz clic en la última compilación → lee el log. Busca
bun install vX.X.Xcerca del principio. - Revisión del sitio: visita tu URL de producción y navega por varias páginas.
- Revisión de la consola: abre las DevTools del navegador → pestaña Console. Busca errores o advertencias que no estuvieran antes.
# Comprobación HTTP rápida desde tu terminal:
curl -I https://your-site.pages.devDeberías obtener una respuesta 200 OK.
Resolución de problemas habituales
La compilación se queda colgada en bun install
bun install puede quedarse colgado de forma intermitente en Cloudflare Pages. Es un problema conocido.
Solución: define SKIP_DEPENDENCY_INSTALL=true como variable de entorno en Cloudflare Dashboard y luego cambia tu comando de compilación para instalar Bun manualmente con npm:
npm install -g --allow-scripts=bun bun && export PATH="$(npm prefix -g)/bin:$PATH" && bun --version && bun install && bun run buildEsto evita el Bun preinstalado e instala una copia nueva durante la compilación.
BUN_VERSION=latest provoca un error 403
Configurar BUN_VERSION=latest falla porque el script de instalación de Bun no puede obtener la lista de versiones a través de la imagen de compilación de Cloudflare, basada en asdf.
Solución: fija una versión concreta de Bun:
BUN_VERSION=1.3.14bun: command not found durante la compilación
Probablemente tu proyecto de Cloudflare Pages esté en el sistema de compilación v1, que no tiene Bun preinstalado.
Solución: ve a Cloudflare Dashboard → Pages → Settings y actualiza al sistema de compilación v2 o v3.
Errores de Sharp / optimización de imágenes
En 2023-2024, Sharp (el optimizador de imágenes de Astro) no funcionaba con Bun. Esto se resolvió desde Bun ~1.1.x.
Solución: asegúrate de ejecutar Bun 1.1.x o superior. Si estás en una versión anterior, actualiza la variable de entorno BUN_VERSION.
ERR_HTTP_SOCKET_ASSIGNED u otros errores específicos de Node
Probablemente estés usando el flag --bun, que ejecuta Astro a través del runtime nativo de Bun en lugar del modo de compatibilidad con Node.js. Algunas integraciones no funcionan del todo bien con el Bun nativo.
Solución: quita el flag --bun. Usa bun run build en lugar de bun run --bun build. Seguirás teniendo los tiempos de instalación más rápidos de Bun.
Conflictos de lockfile / errores de frozen lockfile
Cloudflare Pages ejecuta bun install --frozen-lockfile de forma predeterminada. Si tu archivo bun.lock o bun.lockb no está confirmado, la compilación falla.
Solución: ejecuta bun install en local y luego confirma el lockfile:
git add bun.lock
git commit -m "Add Bun lockfile"
git push¿Necesitas el último Bun en Cloudflare?
Si el Bun preinstalado es demasiado antiguo y BUN_VERSION no admite la versión que necesitas, usa este workaround. Define SKIP_DEPENDENCY_INSTALL=true como variable de entorno y luego usa este comando de compilación:
npm install -g --allow-scripts=bun bun && export PATH="$(npm prefix -g)/bin:$PATH" && bun --version && bun install && bun run buildEsto instala un Bun nuevo durante la compilación. Si tu compilación supera el tiempo límite, las instalaciones más rápidas de Bun pueden ayudar. El límite de 20 minutos por compilación es estricto. Mira cómo optimizar la velocidad de compilación de Astro para más consejos.
Cuándo no migrar a Bun
Considera no hacerlo si...
- Usas SSR de Astro con
@astrojs/cloudflareen Astro 6+. Cloudflare Pages ya no es compatible con SSR, solo Workers. Esta guía no te servirá. - Dependes de paquetes específicos de Node.js que no se han probado con Bun.
- Usas plugins de Vite que dependen de aspectos internos de Node.js. Estos pueden romperse con el flag
--bun. - Tu proyecto ya compila y despliega bien con npm o pnpm. Valora si el esfuerzo de la migración merece la pena para tu caso de uso.
Conclusión
Bun en Cloudflare Pages es un runtime compatible con un sistema de compilación maduro (v3) y un fijado de versiones adecuado. La migración es un esfuerzo único: cambia tu lockfile, instala las dependencias con bun install, actualiza el comando de compilación a bun run build y fija BUN_VERSION en Cloudflare Dashboard. Obtienes instalaciones de dependencias más rápidas, compilaciones más rápidas en proyectos con mucha E/S y una experiencia de desarrollo local más sencilla.
Si empiezas un proyecto nuevo, puedes crear un blog gratis con Astro y Cloudflare con Bun desde el primer día. Si estás valorando plataformas de despliegue alternativas para sitios estáticos de Astro, Bunny.net es una opción sólida. Aquí tienes cómo desplegar Astro en Bunny.net.


