@astrojs/netlify
Este adaptador permite a Astro desplegar tu sitio SSR en Netlify.
Aprende como desplegar tu sitio Astro en nuestra guía de despliegue en Netlify.
¿Por qué Astro Netlify?
Sección titulada ¿Por qué Astro Netlify?Si estás usando Astro como un generador de sitios estáticos—su comportamiento es fuera de serie—no necesitas un adaptador.
Si deseas usar renderizado del lado del servidor (SSR), Astro requiere un adaptador que coincida con tu entorno de despliegue.
Netlify es una plataforma de despliegue que te permite alojar tu sitio conectándolo directamente a tu repositorio de GitHub. Este adaptador mejora el proceso de construcción de Astro para preparar tu proyecto para el despliegue a través de Netlify.
Instalación
Sección titulada InstalaciónAgrega el adaptador de Netlify para habilitar SSR en tu proyecto de Astro con el comando astro add
. Esto instalará el adaptador y hará los cambios apropiados en tu archivo astro.config.mjs
en un solo paso.
Añadir dependencias manualmente
Sección titulada Añadir dependencias manualmenteSi prefieres instalar el adaptador manualmente, completa los siguientes dos pasos:
-
Instala el adaptador de Netlify en las dependencias de tu proyecto usando tu gestor de paquetes preferido. Si estás usando npm o no estás seguro, ejecuta esto en la terminal:
-
Agrega dos nuevas líneas a tu archivo de configuración
astro.config.mjs
:
Ejecutar middleware en Funciones Edge
Sección titulada Ejecutar middleware en Funciones EdgeAl desplegar en Netlify Functions, puedes elegir utilizar una Función Edge para ejecutar tu middleware Astro.
Para activarlo, establece la opción de configuración edgeMiddleware
en true
:
Pasa edge context a tu sitio
Sección titulada Pasa edge context a tu sitioLas Funciones Netlify Edge proporcionan un objeto de contexto que incluye metadatos sobre la solicitud, como la IP del usuario, datos de geolocalización y cookies.
Para exponer valores de este contexto a tu sitio, crea un archivo netlify-edge-middleware.ts
(o .js
) en el directorio fuente de tu proyecto. Este archivo debe exportar una función que devuelva los datos a añadir al objeto locals
de Astro, que está disponible en las rutas middleware y Astro.
En este ejemplo, visitorCountry
y hasEdgeMiddleware
se añadirían al objeto locals
de Astro:
Las Funciones Netlify Edge se ejecutan en un entorno Deno, por lo que las declaraciones de importación en este archivo deben utilizar la sintaxis URL de Deno.
netlify-edge-middleware.ts
debe proporcionar una función como su exportación por defecto. Esta función:
- debe devolver un objeto serializable JSON, que no puede incluir tipos como
Map
,function
,Set
, etc. - siempre se ejecutará primero, antes que cualquier otro middleware y rutas.
- no puede devolver una respuesta o redirigir.
Funciones por página
Sección titulada Funciones por páginaEl adaptador de Netlify se construye en una sola función de forma predeterminada. Astro 2.7 añadió soporte para dividir tu construcción en puntos de entrada separados por página. Si utilizas esta configuración, el adaptador de Netlify generará una función separada para cada página. Esto puede ayudar a reducir el tamaño de cada función para que sólo se empaquete el código utilizado en esa página.
Sitios estáticos
Sección titulada Sitios estáticosPara sitios estáticos, generalmente no necesitas un adaptador. Sin embargo, si utilizas la configuración de redirects
en tu archivo de configuración de Astro, puedes utilizar el adaptador de Netlify para traducirlo al formato adecuado de _redirects
.
Una vez que ejecutes astro build
, se generará un archivo dist/_redirects
. Netlify utilizará ese archivo para enrutamiento adecuado de las páginas en producción.
Todavía puedes incluir un archivo public/_redirects
para redirecciones manuales. Cualquier redirección que especifiques en la configuración de redirecciones se añadirá al final de las redirecciones que hayas definido tú mismo.
Constructores bajo demanda
Sección titulada Constructores bajo demandaLos constructores bajo demanda de Netlify son funciones serverless usadas para generar contenido web según sea necesario que se almacena automáticamente en el CDN de Netlify. Puedes habilitar estas funciones usando la configuración de builders
.
Por defecto, todas las páginas se renderizarán en la primera visita y el resultado renderizado se reutilizará para cada visita posterior hasta que vuelvas a desplegar. Para establecer un tiempo de revalidación, llama al runtime.setBuildersTtl(ttl)
local con la duración (en segundos).
El siguiente ejemplo establece un tiempo de revalidación de 45, lo que hace que Netlify almacene el HTML renderizado durante 45 segundos.
Es importante tener en cuenta que los constructores bajo demanda ignoran los parámetros de consulta al comprobar las páginas en caché. Por ejemplo, si example.com/?x=y
está en caché, se servirá para example.com/?a=b
(parámetros de consulta diferentes) y example.com/
(sin parámetros de consulta).
Lee la guía completa de despliegue aquí.
Después de realizar una construcción la carpeta netlify/
contendrá Funciones Netlify en la carpeta netlify/functions/
.
Ahora puedes desplegar. Instala la CLI de Netlify y ejecuta:
La publicación del blog de Netlify sobre Astro y la documentación de Netlify proporcionan más información sobre cómo usar esta integración para desplegar en Netlify.
Configuración
Sección titulada ConfiguraciónPara configurar este adaptador, pasa un objeto a la llamada de función netlify()
en astro.config.mjs
- solo hay una opción de configuración posible:
Construimos el directorio dist
en la raíz de tu proyecto. Para cambiar esto, usa la opción dist
:
Y luego apunta a la carpeta dist en tu netlify.toml
:
builders
Sección titulada buildersLos constructores bajo demanda de Netlify son funciones serverless usadas para construir y cachear el contenido de la página en el CDN de Netlify. Puedes habilitar estas funciones con la opción builders
:
Los constructores bajo demanda solo están disponibles con el adaptador @astrojs/netlify/functions
y no son compatibles con las Funciones Edge.
binaryMediaTypes
Sección titulada binaryMediaTypesEsta opción solo es necesaria para el adaptador de Funciones y no es necesaria para las Funciones Edge.
Las Funciones de Netlify requieren que los datos binarios en el body
estén codificados en base64. El adaptador @astrojs/netlify/functions
maneja esto automáticamente en función de la cabecera Content-Type
.
Verificamos los tipos mime comunes para archivos de audio, imagen y video. Para incluir tipos mime específicos que deben tratarse como datos binarios, incluye la opción binaryMediaTypes
con una lista de tipos mime binarios.
Ejemplos
Sección titulada Ejemplos-
La plantilla de inicio de Astro Netlify Edge proporciona un ejemplo y una guía en el archivo README.
-
¡Explora proyectos de Astro Netlify en GitHub para más ejemplos!
Solución de problemas
Sección titulada Solución de problemasPara obtener ayuda, revisa el canal #support
en Discord. ¡Nuestros amigables miembros del Escuadrón de Soporte están aquí para ayudarte!
Puedes revisar nuestra Documentación de Integración de Astro para más información sobre integraciones.
Contribuyendo
Sección titulada ContribuyendoEste paquete es mantenido por el equipo central de Astro. ¡Estás invitado a enviar un problema o PR!
Changelog
Sección titulada ChangelogConsulta el CHANGELOG.md para un historial de cambios en esta integración.