tutoriales.com

SvelteKit y Adaptadores: Desplegando Tu Aplicación en Cualquier Plataforma 🌐

SvelteKit ofrece una flexibilidad increíble para el despliegue gracias a sus adaptadores. Este tutorial te guiará a través del proceso de configuración y uso de diferentes adaptadores para desplegar tu aplicación SvelteKit en una variedad de entornos, desde plataformas serverless hasta servidores Node.js tradicionales. Descubre cómo SvelteKit te permite elegir la estrategia de despliegue que mejor se adapte a tus necesidades.

Intermedio10 min de lectura11 views
Reportar error

SvelteKit es un potente framework para construir aplicaciones web robustas y de alto rendimiento. Una de sus características más destacadas es la forma en que maneja el despliegue. A diferencia de otros frameworks que a menudo te fuerzan a una única solución de alojamiento, SvelteKit abraza la diversidad a través de su concepto de adaptadores.

Los adaptadores son complementos que toman tu aplicación SvelteKit construida y la transforman en un formato que puede ejecutarse en un entorno específico. ¿Quieres desplegar en Vercel? Hay un adaptador. ¿En Netlify? También. ¿Quizás en un servidor Node.js autoalojado o incluso como un SPA estático? ¡SvelteKit tiene adaptadores para eso y más!

Este tutorial te sumergirá en el mundo de los adaptadores de SvelteKit, explicando qué son, cómo funcionan y, lo más importante, cómo usarlos para desplegar tu aplicación en tus plataformas favoritas.

¿Qué Son los Adaptadores de SvelteKit? 🤔

Imagina que has construido una increíble aplicación SvelteKit. Ahora necesitas llevarla al mundo real, ponerla en línea para que tus usuarios puedan acceder a ella. Aquí es donde entran los adaptadores.

En esencia, un adaptador es una herramienta que convierte la salida de tu construcción SvelteKit en un formato compatible con un entorno de despliegue específico. Cuando ejecutas npm run build, SvelteKit genera los archivos de tu aplicación (HTML, CSS, JavaScript). El adaptador toma estos archivos y los empaqueta, o modifica, de una manera que el runtime de tu proveedor de hosting pueda entender y ejecutar.

Por ejemplo:

  • El adaptador de Vercel genera un package.json y una estructura de carpetas que Vercel espera para sus funciones serverless.
  • El adaptador de Netlify hace algo similar para el entorno de Netlify Functions.
  • El adaptador de Node.js crea un servidor Express o similar que puedes ejecutar en cualquier máquina con Node.js.
  • El adaptador estático genera HTML, CSS y JS planos que puedes subir a cualquier servidor web estático (como un bucket S3 o GitHub Pages).
📌 Nota: Los adaptadores se encargan de la mayor parte del trabajo pesado, abstraer la complejidad del despliegue para que puedas concentrarte en desarrollar tu aplicación.

Beneficios Clave de Usar Adaptadores ✨

  • Flexibilidad de Despliegue: No estás atado a una única plataforma. Puedes cambiar de proveedor de hosting con relativa facilidad.
  • Optimización Específica de Plataforma: Los adaptadores están diseñados para aprovechar las características únicas de cada plataforma, como las funciones serverless o la red de entrega de contenido (CDN).
  • Mantenimiento Sencillo: SvelteKit y la comunidad mantienen los adaptadores actualizados con los cambios en las plataformas y en el propio framework.
  • Separación de Preocupaciones: Tu lógica de aplicación permanece limpia y agnóstica al despliegue.

Instalación y Configuración Básica de Adaptadores 🛠️

El proceso para usar un adaptador es sorprendentemente simple. Primero, necesitas instalar el adaptador como una dependencia de desarrollo en tu proyecto. Luego, lo configuras en tu archivo svelte.config.js.

Vamos a empezar con un proyecto SvelteKit nuevo. Si ya tienes uno, puedes saltarte este paso.

npm create svelte@latest my-sveltekit-app
cd my-sveltekit-app
npm install

Ahora, para instalar un adaptador, usarás npm install -D. Por ejemplo, para el adaptador de Vercel:

npm install -D @sveltejs/adapter-vercel

Una vez instalado, abre tu archivo svelte.config.js en la raíz de tu proyecto y actualízalo para usar el adaptador:

// svelte.config.js
import adapter from '@sveltejs/adapter-vercel';

/** @type {import('@sveltejs/kit').Config} */
const config = {
	kit: {
		adapter: adapter()
	}
};

export default config;

¡Así de fácil! Con solo esas líneas, SvelteKit sabrá cómo preparar tu aplicación para Vercel cuando ejecutes npm run build.

💡 Consejo: Si necesitas opciones de configuración específicas para un adaptador (por ejemplo, rutas de funciones para el adaptador de Node.js), las pasarás como un objeto a la función del adaptador: `adapter({ out: 'build' })`. Consulta la documentación de cada adaptador para ver las opciones disponibles.

Adaptadores Populares y Casos de Uso 🎯

SvelteKit ofrece varios adaptadores oficiales y de la comunidad. Exploraremos algunos de los más comunes.

1. @sveltejs/adapter-vercel (Serverless Functions) 🚀

Este es probablemente uno de los adaptadores más utilizados. Es ideal para desplegar en Vercel, la compañía detrás de Next.js y un gran partidario de la infraestructura serverless. Con este adaptador, tus rutas API y rutas SSR se convierten en funciones serverless de Vercel, y tus archivos estáticos se sirven a través de su CDN global.

Instalación:

npm install -D @sveltejs/adapter-vercel

svelte.config.js:

import adapter from '@sveltejs/adapter-vercel';

const config = {
	kit: {
		adapter: adapter()
	}
};

export default config;

Proceso de Despliegue:

  1. Asegúrate de que tu proyecto SvelteKit esté en un repositorio de Git (GitHub, GitLab, Bitbucket).
  2. Conéctate a Vercel y crea un nuevo proyecto, importando tu repositorio.
  3. Vercel detectará automáticamente que es una aplicación SvelteKit y usará el adaptador configurado.
  4. Cada push a tu rama principal (o a la rama configurada) activará un nuevo despliegue.
Código SvelteKit npm run build con adapter-vercel Artefactos de Vercel Serverless Functions + CDN Despliegue en Vercel

2. @sveltejs/adapter-netlify (Netlify Functions) 🌐

Similar al adaptador de Vercel, el adaptador de Netlify te permite desplegar tu aplicación SvelteKit en Netlify. Netlify también utiliza funciones serverless y una poderosa CDN.

Instalación:

npm install -D @sveltejs/adapter-netlify

svelte.config.js:

import adapter from '@sveltejs/adapter-netlify';

const config = {
	kit: {
		adapter: adapter()
	}
};

export default config;

Proceso de Despliegue:

  1. Conecta tu repositorio de Git a Netlify.
  2. Crea un nuevo sitio en Netlify, selecciona tu repositorio.
  3. Netlify configurará automáticamente los comandos de construcción (npm run build) y el directorio de publicación (detectará build o dist de SvelteKit).
  4. Los pushes a tu rama principal dispararán despliegues automáticos.
🔥 Importante: Para ambos adaptadores (Vercel y Netlify), la magia sucede durante el proceso de construcción de su plataforma. SvelteKit genera el *output* para el adaptador, y la plataforma de *hosting* se encarga de ejecutarlo.

3. @sveltejs/adapter-node (Servidor Node.js Personalizado) 🖥️

Si prefieres tener control total sobre tu servidor o desplegar en tu propia infraestructura (VPS, máquinas virtuales, Docker), el adaptador de Node.js es tu mejor amigo. Este adaptador genera una aplicación Node.js que puedes ejecutar como un servidor estándar.

Instalación:

npm install -D @sveltejs/adapter-node

svelte.config.js:

import adapter from '@sveltejs/adapter-node';

const config = {
	kit: {
		adapter: adapter({
			out: 'build' // Directorio de salida, por defecto 'build'
		})
	}
};

export default config;

Después de npm run build, encontrarás tu aplicación lista para ejecutar en el directorio build (o el que hayas especificado en out). El build contendrá un index.js que es tu aplicación servidora.

Ejecución:

node build/index.js

Puedes integrar esto con PM2, Docker, o cualquier otro gestor de procesos de Node.js. Esto es ideal para aplicaciones que necesitan acceder a una base de datos local, realizar tareas de larga duración o que simplemente no se ajustan al modelo serverless.

4. @sveltejs/adapter-static (Generación de Sitios Estáticos - SSG) 📄

Este adaptador es perfecto para sitios web que no necesitan procesamiento en el lado del servidor para cada solicitud, como blogs, portfolios o sitios de documentación. Genera archivos HTML, CSS y JavaScript completamente estáticos que pueden ser servidos por cualquier servidor web simple (Apache, Nginx, GitHub Pages, S3, etc.).

⚠️ Advertencia: Para usar `adapter-static`, todas tus rutas deben ser pre-renderizables. Esto significa que no pueden tener lógica `load` que dependa de datos dinámicos del servidor o variables de entorno que solo existen en tiempo de ejecución del servidor. Si tienes rutas dinámicas o APIs, este adaptador no funcionará para ellas.

Instalación:

npm install -D @sveltejs/adapter-static

svelte.config.js:

import adapter from '@sveltejs/adapter-static';

const config = {
	kit: {
		adapter: adapter({
			pages: 'build',
			assets: 'build',
			fallback: undefined, // O '200.html' para SPA con rutas que no existen
			precompress: false // Activa la precompresión Gzip/Brotli
		})
	}
};

export default config;

+page.js o +layout.js para pre-renderización:

Para que una ruta sea estática, debes indicarle a SvelteKit que la pre-renderice. Esto se hace exportando prerender = true.

// src/routes/+page.js
export const prerender = true;

También puedes configurar la pre-renderización globalmente en svelte.config.js:

// svelte.config.js
import adapter from '@sveltejs/adapter-static';

const config = {
	kit: {
		adapter: adapter({
			// ... opciones
		}),
		prerender: {
			entries: ['*', '/otra-ruta'] // Renderiza todas las rutas o específicas
		}
	}
};

export default config;

Después de npm run build, tu sitio estático completo estará en el directorio build (o el que hayas especificado). Simplemente sube estos archivos a tu proveedor de hosting estático.

Comparativa Rápida de Adaptadores 📊

Característicaadapter-verceladapter-netlifyadapter-nodeadapter-static
---------------
Tipo de DespliegueServerlessServerlessServidor NodeEstático (SSG)
Ideal paraVercelNetlifyControl totalSitios estáticos
---------------
CostoPago por usoPago por usoServidor propioMuy bajo / gratis
EscalabilidadAutomáticaAutomáticaManualCDN (automática)
---------------
FlexibilidadMediaMediaAltaAlta (CDN)
RequisitosVercel AccountNetlify AccountNode.jsServidor web
¡Dominio de adaptadores!

Casos de Uso Avanzados y Consideraciones 🤔💡

Despliegue Híbrido con adapter-static y adapter-node

¿Qué pasa si tienes un sitio mayormente estático, pero algunas rutas necesitan SSR o funciones API? SvelteKit te permite una estrategia de despliegue híbrido. Puedes usar adapter-static para las rutas pre-renderizadas y luego usar un proxy inverso o un edge-function para enrutar las rutas dinámicas a un servidor Node.js (o serverless function) separado.

Ejemplo de configuración híbrida (conceptual)

Esto no es una configuración directa del adaptador, sino una estrategia a nivel de infraestructura. Por ejemplo, en un CDN como Cloudflare Workers o un proxy inverso como Nginx:

server {
    listen 80;
    server_name example.com;

    location /api/ {
        proxy_pass http://localhost:3001; # Tu servidor Node.js
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }

    location / {
        root /var/www/html/static-site; # Tu sitio estático de adapter-static
        try_files $uri $uri/ /index.html;
    }
}

Aquí, /api/ es manejado por un servidor Node.js, mientras que el resto es servido estáticamente.

Entorno de Producción vs. Desarrollo

Es crucial recordar que los adaptadores solo se activan durante el proceso de construcción para producción. Cuando estás desarrollando (npm run dev), SvelteKit utiliza un servidor de desarrollo interno que no pasa por el adaptador.

Gestión de Variables de Entorno 🔑

Las variables de entorno se manejan de manera diferente según el adaptador y la plataforma. Generalmente:

  • Variables Públicas (accedidas en el cliente): Deben ser prefijadas con PUBLIC_ (ej. PUBLIC_API_URL). Estas se empaquetan en el código JavaScript del cliente durante la construcción. SvelteKit te ayuda a inyectarlas correctamente.
  • Variables Privadas (solo en el servidor): Se acceden sin el prefijo PUBLIC_ y se manejan directamente por el entorno del servidor (Vercel, Netlify, Node.js).
⚠️ Advertencia: Nunca pongas información sensible (claves API, credenciales de base de datos) en variables de entorno públicas, ya que serán visibles en el navegador del usuario.

Adaptadores de la Comunidad y Otros 📦

Además de los adaptadores oficiales, la comunidad de Svelte ha creado adaptadores para otras plataformas. Por ejemplo:

  • @sveltejs/adapter-cloudflare-workers para Cloudflare Workers.
  • @sveltejs/adapter-deno para Deno Deploy.
  • @sveltejs/adapter-appengine para Google App Engine.

Puedes encontrar una lista más completa en el repositorio de SvelteKit o buscando en npm. Siempre verifica la documentación y el estado de mantenimiento de los adaptadores de la comunidad.

¿Y si mi plataforma no tiene adaptador? 🤔

Si tu plataforma de despliegue no tiene un adaptador dedicado, tienes varias opciones:

  1. adapter-node: Genera un servidor Node.js estándar. La mayoría de los entornos de hosting que soportan Node.js pueden ejecutarlo.
  2. adapter-static: Si tu aplicación es principalmente estática, puedes usar este adaptador y simplemente servir los archivos resultantes.
  3. Crear tu propio adaptador: Para casos muy específicos, puedes escribir tu propio adaptador. SvelteKit tiene una API para esto, aunque es un proceso más avanzado.

Pasos para Desplegar tu Aplicación (Resumen) ✅

Aquí hay un resumen de los pasos generales para desplegar tu aplicación SvelteKit con un adaptador:

Paso 1: Desarrolla tu Aplicación: Crea tu proyecto SvelteKit y asegúrate de que funciona correctamente en modo desarrollo (`npm run dev`).
Paso 2: Elige tu Adaptador: Selecciona el adaptador que mejor se ajuste a tu plataforma de despliegue.
Paso 3: Instala el Adaptador: Ejecuta `npm install -D `.
Paso 4: Configura `svelte.config.js`: Importa y usa el adaptador en tu archivo de configuración.
Paso 5: Prepara la Producción: Asegúrate de que tus variables de entorno estén configuradas correctamente para el entorno de producción. Si usas `adapter-static`, marca las rutas como `prerender = true`.
Paso 6: Construye la Aplicación: Ejecuta `npm run build`. El adaptador transformará tu aplicación para el despliegue.
Paso 7: Despliega: Sigue las instrucciones específicas de tu plataforma de *hosting* (conectar con Git, subir archivos, etc.) para poner tu aplicación en línea.
💡 Consejo: Siempre lee la documentación oficial del adaptador que elijas, ya que puede haber matices o configuraciones específicas para un rendimiento óptimo.

Conclusión 🎉

Los adaptadores son una de las características más poderosas y flexibles de SvelteKit. Permiten a los desarrolladores elegir libremente su estrategia de despliegue, optimizando sus aplicaciones para una amplia gama de entornos, desde soluciones serverless hasta servidores tradicionales. Al entender y aprovechar los adaptadores, desbloqueas el verdadero potencial de SvelteKit para construir y entregar aplicaciones web modernas y eficientes.

Ahora estás equipado con el conocimiento necesario para llevar tus proyectos SvelteKit al mundo real. ¡Feliz despliegue!

Tutoriales relacionados

Comentarios (0)

Aún no hay comentarios. ¡Sé el primero!