Migrar de Hugo/Hexo/Next.js a Astro: guía detallada en 3 días

Introducción
Cada vez que abres tu blog y ves cómo carga despacio, algo se te encoge un poco. O quieres añadir una función pequeña a una plantilla de Hugo y descubres que la sintaxis es casi antinatural. O montaste un blog estático con Next.js y el JavaScript empaquetado es enorme para algo que solo debería mostrar artículos.
Yo pasé por lo mismo. Hasta que conocí Astro, el framework que promete llevar el rendimiento al máximo y sacar 100 en PageSpeed Insights sin esfuerzo. Al principio desconfiaba, pero al ver a más desarrolladores contar que la migración no era tan dura, me animé.
Aun así, migrar da respeto. Tres dudas suelen repetirse:
- ¿Será muy pesado? Tengo decenas o cientos de artículos; ¿hay que tocarlos uno a uno?
- ¿Afectará al SEO? ¿Y si cambian las URL?
- ¿Qué trampas conviene conocer antes? No quieres quedarte a medias.
Si te identificas, este artículo es para ti. Recorro la ruta completa desde Hugo, Hexo y Next.js hacia Astro: pasos concretos, trampas habituales y buenas prácticas. Según la experiencia que he recopilado, el proceso suele llevar 1-3 días.
Por qué vale la pena migrar a Astro
Antes de los pasos, conviene ver por qué tantos equipos migran. No es moda: hay beneficios medibles.
Ventajas clave de Astro
Estrategia Zero JavaScript
La gran seña de Astro es el JS cero por defecto. Las páginas generadas no incluyen JavaScript salvo que lo pidas. Para blogs y documentación centrados en contenido, es una de las mejores palancas de rendimiento.
Un desarrollador japonés contó que, tras migrar de Next.js a Astro, PageSpeed Insights pasó de 85 a 100 y se mantuvo ahí en cada prueba. La mejora viene sobre todo de:
- Eliminar el JavaScript necesario para la hidratación
- Inlinar CSS y reducir peticiones de red
Arquitectura Islands
Los sitios modernos necesitan interactividad: comentarios, búsqueda, cambio de tema. Astro lo resuelve con Islands: en HTML estático añades JavaScript solo a los componentes que lo necesitan; el resto sigue siendo estático.
Es como una isla con vida dinámica rodeada de un mar de HTML estático.
Experiencia de desarrollo moderna
Si has usado Hugo, sabes lo incómoda que puede ser su sintaxis de plantillas. Astro es distinto: los archivos .astro se parecen mucho a JSX y puedes usar componentes de React, Vue, Svelte y otros frameworks habituales.
Un blogger lo resumió bien: en Hugo personalizar plantillas es incómodo aunque haya muchos temas open source; en Astro ajustar un tema es mucho más natural, con mentalidad de frontend moderno.
Comparación con otros frameworks
Tabla rápida de diferencias:
| Característica | Hugo | Hexo | Next.js | Astro |
|---|---|---|---|---|
| Velocidad de build | Muy rápida (Go) | Rápida | Media | Rápida |
| Sintaxis de plantillas | Go (difícil) | EJS/Pug | JSX/TSX | Astro/JSX |
| Soporte de frameworks | Ninguno | Limitado | React | Varios |
| JS por defecto | 0 | Medio | Grande | 0 |
| Experiencia de desarrollo | Regular | Regular | Excelente | Excelente |
| Madurez del ecosistema | Alta | Media | Alta | En crecimiento |
Qué proyectos encajan mejor
No todo proyecto debe migrar a Astro. Mira si el tuyo encaja en estas categorías:
Proyectos que encajan bien:
- Blogs personales y técnicos
- Documentación y bases de conocimiento
- Webs corporativas y páginas de producto
- Portfolios
Proyectos menos indicados:
- Aplicaciones de una sola página muy interactivas (dashboards, paneles de administración)
- Apps con actualización de datos en tiempo real
- Proyectos con mucho estado en el cliente
En resumen: si tu sitio es contenido primero, Astro encaja muy bien. Si necesitas mucha interactividad y estado en tiempo real, Next.js u otro framework SPA sigue siendo la opción sensata.
Preparación antes de migrar
No empieces a tocar código sin estos pasos; la migración irá mucho más fluida.
1. Copia de seguridad del proyecto actual
Es el paso más importante. Yo uso una rama de git:
# Crear rama de migración
git checkout -b migrate-to-astro
# Guardar el estado actual
git add .
git commit -m "Backup: inicio de migración a Astro"
Si algo sale mal, vuelves a la rama anterior.
2. Evaluar el volumen de trabajo
Antes de empezar, estima el esfuerzo:
Evaluación de contenido:
- Número de artículos: ____
- Sintaxis Markdown: estándar / extendida
- Número de imágenes: ____
- Ubicación de imágenes: rutas relativas / absolutas
Estimación de tiempo:
- Menos de 50 artículos: 1 día
- 50-200 artículos: 2 días
- Más de 200: 3 días
3. Elegir un tema de Astro
Hay temas de blog muy buenos. Elegir uno parecido al actual ahorra tiempo:
Temas recomendados:
- AstroPaper: minimalista, ideal para blogs técnicos
- Fuwari: multidioma y con muchas funciones
- Astro Cactus: incluye árbol de categorías completo
Creación rápida:
# Con el tema AstroPaper
npm create astro@latest my-blog -- --template satnaing/astro-paper
# O con Fuwari
npm create astro@latest my-blog -- --template saicaca/fuwari
4. Preparar el entorno
Asegúrate de tener:
- Node.js: v18.14.1 o superior
- Gestor de paquetes: npm, pnpm o yarn
- Extensión de VS Code: Astro (oficial, imprescindible)
Pasos detallados: migrar desde Hugo
Hugo suele ser el caso más frecuente. La dificultad es media; el grueso del trabajo es convertir plantillas.
Paso 1: Crear el proyecto Astro
npm create astro@latest my-new-blog
cd my-new-blog
npm install
# Instalar integraciones habituales
npx astro add mdx sitemap
Paso 2: Migrar el contenido Markdown
Es el paso crítico. La buena noticia: el frontmatter de Hugo y Astro es en gran parte compatible; solo hay que ajustar algunos campos.
Mapeo de campos del frontmatter:
# Formato Hugo
---
title: "Mi artículo"
date: 2023-01-15
tags: ["frontend", "Astro"]
---
# Formato Astro (cambios marcados con ⬅)
---
title: "Mi artículo"
pubDate: 2023-01-15 ⬅ date pasa a pubDate
tags: ["frontend", "Astro"]
---
Con muchos artículos, puedes automatizar el reemplazo:
# macOS/Linux
find content -name "*.md" -exec sed -i '' 's/^date:/pubDate:/g' {} +
# Windows (PowerShell)
Get-ChildItem content -Filter *.md -Recurse | ForEach-Object {
(Get-Content $_.FullName) -replace '^date:', 'pubDate:' | Set-Content $_.FullName
}
Paso 3: Trucos para convertir plantillas
Las plantillas de Hugo usan Go Template; Astro usa sintaxis tipo JSX. Un atajo: si ya tenías HTML, pégalo en un .astro y tendrás hecho gran parte del trabajo.
Ejemplo de plantilla Hugo:
{{ range .Pages }}
<article>
<h2>{{ .Title }}</h2>
<p>{{ .Summary }}</p>
</article>
{{ end }}
Equivalente en Astro:
---
const posts = await Astro.glob('../pages/blog/*.md');
---
{posts.map(post => (
<article>
<h2>{post.frontmatter.title}</h2>
<p>{post.frontmatter.description}</p>
</article>
))}
La sintaxis resulta mucho más moderna.
Paso 4: Imágenes y recursos estáticos
Copia el contenido de static/ de Hugo a public/ de Astro, manteniendo las rutas:
cp -r hugo-blog/static/* astro-blog/public/
Si en los artículos usas rutas relativas o absolutas (por ejemplo /images/pic.jpg), no hace falta cambiarlas: lo de public/ se sirve desde la raíz del sitio.
Paso 5: Redirecciones de URL
Importante para el SEO. Si cambia la estructura de URL, configura redirecciones 301.
En astro.config.mjs:
export default defineConfig({
redirects: {
'/old-path': '/new-path',
'/posts/[slug]': '/blog/[slug]',
}
})
Pasos detallados: migrar desde Hexo
La migración desde Hexo es parecida a la de Hugo, con matices propios.
Paso 1: Crear el proyecto y configurar Content Collections
pnpm create astro@latest my-blog --template satnaing/astro-paper
cd my-blog
pnpm install
Astro gestiona el contenido con Content Collections; configúralo en src/content/config.ts:
import { defineCollection, z } from 'astro:content';
const blog = defineCollection({
schema: z.object({
title: z.string(),
pubDate: z.date(),
description: z.string(),
tags: z.array(z.string()),
}),
});
export const collections = { blog };
Ese esquema valida el frontmatter y avisa si falta algún campo.
Paso 2: Migrar contenido e imágenes
Copia los artículos de source/_posts/ de Hexo a src/content/blog/ de Astro y reemplaza date por pubDate:
find src/content/blog -name "*.md" -exec sed -i 's/^date:/pubDate:/g' {} +
Para imágenes hay dos enfoques:
Opción 1: carpeta public/ (simple, recomendada)
cp -r hexo-blog/source/images astro-blog/public/images
Las rutas en los artículos no cambian.
Opción 2: componente Image de Astro (mejor rendimiento)
---
import { Image } from 'astro:assets';
import myImage from '../assets/pic.jpg';
---
<Image src={myImage} alt="Descripción" />
Paso 3: Redirecciones de rutas
Hexo suele usar /YYYY/MM/DD/post-name/; Astro por defecto /blog/post-name/.
Para conservar el formato antiguo, en astro.config.ts:
export default defineConfig({
redirects: {
'/:year/:month/:day/:slug': '/blog/:slug',
}
})
Paso 4: RSS con contenido completo
Hexo suele publicar el cuerpo completo en el RSS; en Astro hay que configurarlo.
npx astro add rss
En src/pages/rss.xml.js:
import rss from '@astrojs/rss';
import { getCollection } from 'astro:content';
import { marked } from 'marked';
export async function GET(context) {
const posts = await getCollection('blog');
return rss({
title: 'Mi blog',
description: 'Descripción del blog',
site: context.site,
items: posts.map(post => ({
title: post.data.title,
pubDate: post.data.pubDate,
link: `/blog/${post.slug}/`,
content: marked.parse(post.body), // contenido completo
})),
});
}
Pasos detallados: migrar desde Next.js
De Next.js a Astro es un poco más complejo por diferencias de arquitectura. Si usabas SSG en Next.js, la migración es más sencilla.
Paso 1: Entender las diferencias de arquitectura
Diferencias clave:
- Next.js es una SPA con un
_app.jsglobal - Astro es un sitio multipágina (MPA); cada página es independiente
Similitudes:
- Ambos admiten JSX
- Enrutado por sistema de archivos
- SSG y SSR
Mentalmente no estás «migrando» una app Next.js completa, sino reconstruyendo un sitio de contenido con Astro.
Paso 2: Crear el proyecto e instalar React
npm create astro@latest my-blog
cd my-blog
npx astro add react
Con la integración de React puedes reutilizar componentes existentes.
Paso 3: Estrategia de migración de componentes
Astro admite .jsx y .tsx directamente; puedes copiar componentes React tal cual.
Componente Next.js (sin cambios):
// components/Button.jsx
export default function Button({ children, onClick }) {
return <button onClick={onClick}>{children}</button>
}
Uso en Astro:
---
import Button from '../components/Button.jsx';
---
<Button client:load>Haz clic</Button>
La directiva client:load indica que el componente necesita JavaScript en el cliente (por defecto los componentes son estáticos).
Paso 4: Pasar componentes React a Astro
Para componentes sin interactividad, conviene convertirlos a .astro por rendimiento.
Componente React/Next.js:
export default function Card({ title, description }) {
const formattedDate = new Date().toLocaleDateString();
return (
<div className="card">
<h2>{title}</h2>
<p>{description}</p>
<span>{formattedDate}</span>
</div>
);
}
Componente Astro:
---
const { title, description } = Astro.props;
const formattedDate = new Date().toLocaleDateString();
---
<div class="card">
<h2>{title}</h2>
<p>{description}</p>
<span>{formattedDate}</span>
</div>
Diferencias principales:
className→class- Props desde
Astro.props - JavaScript entre
---
Paso 5: Ajustar la estrategia de hidratación
Next.js hidrata por defecto; Astro no. Tú decides qué componentes necesitan interactividad:
Directivas de hidratación:
client:load- hidrata al cargar la páginaclient:idle- hidrata cuando el navegador está inactivoclient:visible- hidrata al entrar en el viewportclient:only- solo en el cliente
---
import Counter from '../components/Counter.jsx';
import HeavyChart from '../components/HeavyChart.jsx';
---
<!-- Interactividad inmediata -->
<Counter client:load />
<!-- Carga diferida, mejor rendimiento -->
<HeavyChart client:visible />
Elegir bien estas directivas marca una gran diferencia de rendimiento.
Paso 6: Rutas dinámicas
getStaticPaths de Next.js tiene equivalente en Astro con sintaxis muy parecida:
Ruta dinámica en Astro:
---
// src/pages/blog/[slug].astro
import { getCollection } from 'astro:content';
export async function getStaticPaths() {
const posts = await getCollection('blog');
return posts.map(post => ({
params: { slug: post.slug },
props: { post },
}));
}
const { post } = Astro.props;
---
<article>
<h1>{post.data.title}</h1>
<div set:html={post.body} />
</article>
Paso 7: Comparación de rendimiento
Aquí está la mayor ganancia. Según experiencias reales:
Antes (Next.js SSG):
- PageSpeed Insights: 85 puntos
- JS en la primera carga: ~200 KB
- Lighthouse Performance: 80-90
Después (Astro):
- PageSpeed Insights: 100 (de forma consistente)
- JS en la primera carga: ~10 KB (0 KB si no hay componentes interactivos)
- Lighthouse Performance: 95-100
La mejora viene de:
- Quitar el coste de hidratación de React
- Inlinar CSS y reducir peticiones
- Cargar JavaScript solo donde hace falta
Buenas prácticas generales de migración
Da igual el framework de origen; estas prácticas aplican a todos.
1. Migración por fases
No hace falta migrar todo de golpe:
Fase 1: piloto
- Migra 5-10 artículos
- Valida el flujo
- Mide la mejora de rendimiento
Fase 2: migración completa
- Todo el contenido
- Plantillas y componentes
- Reglas de redirección
Fase 3: pulido
- Funciones que falten
- Optimización de rendimiento
- Revisión SEO
Un blogger contó que al principio solo publicaba artículos nuevos en Astro y dejaba los antiguos donde estaban. Ese enfoque gradual reduce el riesgo.
2. Proteger el SEO
Lo que más preocupa en una migración. No te saltes esto:
Redirecciones 301
Si cambian las URL, configura 301:
// Vercel: vercel.json
{
"redirects": [
{ "source": "/old-path/:slug", "destination": "/new-path/:slug", "permanent": true }
]
}
// Cloudflare Pages: _redirects
/old-path/:splat /new-path/:splat 301
Actualizar el sitemap
npx astro add sitemap
En astro.config.mjs:
import { defineConfig } from 'astro/config';
import sitemap from '@astrojs/sitemap';
export default defineConfig({
site: 'https://yourdomain.com',
integrations: [sitemap()],
});
Enviar a los buscadores
Tras la migración, envía el nuevo sitemap en Google Search Console y Bing Webmaster Tools.
3. Optimización de imágenes
Astro incluye componentes de optimización de imágenes; úsalos:
npx astro add image
Ejemplo:
---
import { Image } from 'astro:assets';
import cover from '../assets/cover.jpg';
---
<Image src={cover} alt="Imagen de portada" width={800} height={600} />
Ventajas: varios tamaños automáticos, conversión a WebP y carga diferida.
4. Lista de comprobación antes de publicar
No publiques sin revisar:
Contenido:
- Todos los artículos se muestran bien
- Frontmatter completo
- Enlaces internos funcionan
- Páginas de etiquetas y categorías correctas
Recursos:
- Imágenes cargan bien
- Estilos CSS aplicados
Funciones:
- Búsqueda operativa
- Sistema de comentarios operativo
- RSS disponible
SEO:
- Sitemap generado
- robots.txt correcto
- URL antiguas redirigen bien
Rendimiento:
- Prueba en PageSpeed Insights
- Auditoría Lighthouse
Herramientas útiles:
- Broken Link Checker - enlaces rotos
- PageSpeed Insights - rendimiento
- Screaming Frog - rastreo SEO
Problemas frecuentes y soluciones
Estos son los fallos que más aparecen y cómo resolverlos.
1. Errores de build
Problema: Could not find Sharp
Dependencia de optimización de imágenes de Astro.
# Solución
npm install sharp
Si sigue fallando, desactiva la optimización en astro.config.mjs:
export default defineConfig({
image: {
service: { entrypoint: 'astro/assets/services/noop' }
}
})
Problema: versión de MDX incompatible
Con Astro 5.0, actualiza @astrojs/mdx a v4.0.0:
npm install @astrojs/mdx@latest
2. Pérdida de estilos
Problema: estilos con alcance que no aplican
El <style> de Astro es scoped por defecto.
<!-- Estilo local -->
<style>
.card { color: blue; }
</style>
<!-- Estilo global -->
<style is:global>
.card { color: blue; }
</style>
Problema: estilos del contenido Markdown
El HTML generado desde Markdown necesita estilos globales:
<style is:global>
.prose h1 { font-size: 2rem; }
.prose h2 { font-size: 1.5rem; }
.prose p { margin: 1rem 0; }
.prose code { background: #f4f4f4; padding: 0.2rem 0.4rem; }
</style>
<article class="prose">
<Content />
</article>
O usa el plugin Tailwind Typography.
3. Integración de servicios de terceros
Sistema de comentarios
Astro admite Disqus, Giscus, Utterances y otros:
<script
src="https://giscus.app/client.js"
data-repo="your-username/your-repo"
data-repo-id="your-repo-id"
data-category="Announcements"
data-category-id="your-category-id"
data-mapping="pathname"
data-strict="0"
data-reactions-enabled="1"
data-emit-metadata="0"
data-input-position="bottom"
data-theme="light"
data-lang="zh-CN"
crossorigin="anonymous"
async>
</script>
Analítica
Google Analytics se integra directamente:
<html>
<head>
<script async src="https://www.googletagmanager.com/gtag/js?id=G-XXXXXXXXXX"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-XXXXXXXXXX');
</script>
</head>
</html>
4. Configuración de despliegue
Vercel
Conecta el repositorio de GitHub; Vercel detecta Astro automáticamente.
Cloudflare Pages
Configuración de build:
- Build command:
npm run build - Build output directory:
dist - Node.js version: 18 o superior
GitHub Pages
En astro.config.mjs:
export default defineConfig({
site: 'https://username.github.io',
base: '/repo-name',
})
Conclusión
Migrar a Astro no es tan intimidante como parece. Según la experiencia que he recopilado, la mayoría termina en 1-3 días y queda satisfecha.
Resumen de puntos clave:
- Copia de seguridad: rama git para poder volver atrás
- Migración gradual: pocos artículos de prueba antes del volcado completo
- Cuidar el SEO: 301, sitemap actualizado, proteger el ranking
- Probar a fondo: enlaces, imágenes y funciones antes de publicar
- Aprovechar el rendimiento: PageSpeed Insights a 100 es un objetivo realista
Mi consejo: si dudas, abre una rama de prueba, migra unos artículos y mide rendimiento. Si convence, sigue; si no, no pierdes nada.
Recursos útiles:
¡Buena migración! Si te atascas, comenta y lo vemos.
Proceso completo de migración de Hugo/Hexo/Next.js a Astro
Guía detallada en 3 días con pasos concretos, trampas habituales y buenas prácticas para migrar en 1-3 días con mejoras de rendimiento y SEO intacto
⏱️ Estimated time: P3D
- 1
Step 1: Entender por qué vale la pena migrar a Astro
Estrategia Zero JavaScript:
• La gran característica de Astro es el JS cero por defecto
• Las páginas generadas no incluyen JavaScript salvo que lo pidas
• Para blogs y sitios de documentación centrados en contenido, es la opción definitiva de rendimiento
• Tras migrar de Next.js a Astro, PageSpeed Insights pasó de 85 a 100 puntos
• La mejora viene sobre todo de eliminar el JS de hidratación y de la inlinación de CSS, que reduce peticiones de red
Arquitectura Islands:
• Los sitios modernos siempre necesitan algo de interactividad (comentarios, búsqueda, cambio de tema)
• La respuesta de Astro es la arquitectura Islands
• Puedes añadir JavaScript solo a componentes concretos dentro de HTML estático
• El resto de la página sigue siendo puramente estática
Experiencia de desarrollo moderna:
• Si has usado Hugo, sabes lo difícil que es su sintaxis de plantillas
• Astro es distinto: los archivos .astro se parecen mucho a JSX
• También admite componentes de React, Vue, Svelte y otros frameworks habituales - 2
Step 2: Migrar de Hugo a Astro
Conversión de plantillas:
• Hugo usa plantillas Go; Astro usa sintaxis similar a JSX
• Hay que convertir las plantillas Hugo en componentes Astro
Migración de contenido:
• Los archivos de Hugo suelen estar en content/
• Astro usa Content Collections
• Mueve los Markdown a src/content/posts/
• Ajusta el formato del frontmatter
Migración de configuración:
• config.toml de Hugo pasa a astro.config.mjs de Astro
• Incluye URL del sitio, tema y demás ajustes
Mantener la estructura de URL:
• Usa redirects de Astro
• Así la estructura de URL no cambia y el SEO no se resiente - 3
Step 3: Migrar de Hexo a Astro
Conversión del tema:
• El tema de Hexo hay que convertirlo en componentes Astro
• Hexo usa EJS/Jade; Astro usa componentes .astro
Migración de plugins:
• Las funciones de los plugins de Hexo se cubren con integraciones de Astro o implementación propia
• La mayoría de funciones tienen equivalente en Astro
Configuración de despliegue:
• Hexo despliega con hexo deploy
• Astro construye con npm run build y despliega la carpeta dist
• Vercel, Netlify y Cloudflare Pages son sencillos
Migración de contenido:
• El contenido de Hexo está en source/_posts/
• Astro usa Content Collections
• Mueve los Markdown a src/content/posts/
• Ajusta el formato del frontmatter - 4
Step 4: Migrar de Next.js a Astro
Migración de componentes:
• Los componentes React se reutilizan añadiendo client:load u otras directivas
• Los componentes Vue también funcionan directamente
Conversión de rutas:
• Next.js y Astro usan enrutado por sistema de archivos
• La sintaxis difiere un poco; hay que adaptar los archivos de ruta
Configuración SSR:
• Si usabas SSR en Next.js, configura un adaptador SSR en Astro
• Astro admite SSR, SSG y modo híbrido
Configuración de despliegue:
• Next.js suele ir a Vercel; Astro también
• La configuración es parecida: solo cambian el comando de build y el directorio de salida - 5
Step 5: Buenas prácticas y trampas habituales
Buenas prácticas:
1. Haz copia de seguridad (rama git para poder volver atrás)
2. Migración gradual (prueba con pocos artículos antes del volcado completo)
3. Cuida el SEO (redirecciones 301, sitemap actualizado, protege el ranking)
4. Prueba a fondo (enlaces, imágenes y funciones antes de publicar)
5. Disfruta el resultado (el salto de rendimiento es real; PageSpeed Insights puede llegar a 100)
Trampas habituales:
• Mantener la estructura de URL (redirects de Astro)
• Migración de contenido (el Markdown sirve casi tal cual; ajusta el frontmatter)
• Migración de componentes (React/Vue con client:load u otras directivas)
• Despliegue (Vercel, Netlify y Cloudflare Pages son directos)
Según la experiencia que he recopilado, la migración completa lleva solo 1-3 días y casi todos quedan satisfechos.
FAQ
¿Por qué vale la pena migrar a Astro? ¿Qué resultados da?
• Astro destaca por el JS cero por defecto: las páginas no incluyen JavaScript salvo que lo pidas
• Para blogs y documentación es la opción definitiva de rendimiento
• Un desarrollador japonés contó que tras migrar de Next.js a Astro, PageSpeed Insights pasó de 85 a 100
• La mejora viene de quitar el JS de hidratación y de inlinar CSS, reduciendo peticiones
Arquitectura Islands:
• Los sitios modernos necesitan interactividad: comentarios, búsqueda, cambio de tema
• Astro resuelve esto con Islands: JS solo en componentes concretos, el resto estático
Experiencia de desarrollo:
• Hugo tiene una sintaxis de plantillas muy incómoda
• Astro usa .astro casi como JSX
• Admite React, Vue, Svelte y otros frameworks habituales
¿La migración es complicada? ¿Cuánto tiempo lleva?
¿Es complicado? No hace falta reescribir artículo por artículo; la estructura de URL puede mantenerse y el SEO no se resiente.
Buenas prácticas:
1) Copia de seguridad (rama git)
2) Migración gradual (pocos artículos de prueba primero)
3) SEO (301, sitemap, proteger ranking)
4) Pruebas (enlaces, imágenes, funciones)
5) Aprovechar el rendimiento (PageSpeed Insights a 100 es realista)
Mi consejo: si dudas, crea una rama de prueba, migra unos artículos, mide rendimiento y decide. Si no convence, no pierdes nada.
¿Cuáles son los pasos concretos para migrar de Hugo a Astro?
• Hugo usa Go templates; Astro, sintaxis tipo JSX
• Convierte las plantillas Hugo en componentes Astro
Migración de contenido:
• Hugo: content/
• Astro: Content Collections en src/content/posts/
• Ajusta el frontmatter
Configuración:
• config.toml → astro.config.mjs (URL, tema, etc.)
URL:
• Usa redirects de Astro para mantener la estructura
• El SEO no se resiente
¿Cuáles son los pasos concretos para migrar de Hexo a Astro?
• Convierte el tema Hexo en componentes Astro
• Hexo: EJS/Jade; Astro: .astro
Plugins:
• Busca integraciones equivalentes en Astro o implementa la función
• Casi todo tiene equivalente
Despliegue:
• Hexo: hexo deploy
• Astro: npm run build y despliega dist
• Vercel, Netlify y Cloudflare Pages son sencillos
Contenido:
• Hexo: source/_posts/
• Astro: Content Collections en src/content/posts/
• Ajusta el frontmatter
¿Cuáles son los pasos concretos para migrar de Next.js a Astro?
• React se reutiliza con client:load u otras directivas
• Vue también funciona directamente
Rutas:
• Ambos usan enrutado por archivos; adapta la sintaxis
SSR:
• Si usabas SSR en Next.js, configura adaptador SSR en Astro
• Astro admite SSR, SSG e híbrido
Despliegue:
• Next.js y Astro encajan bien en Vercel
• Ajusta comando de build y directorio de salida
¿La migración afecta al SEO? ¿Se puede mantener la estructura de URL?
• La migración no tiene por qué perjudicar el SEO; la estructura de URL puede mantenerse
• Usa redirects de Astro para conservar las rutas
Buenas prácticas:
• SEO: 301, sitemap, proteger ranking
• Pruebas: enlaces, imágenes y funciones antes de publicar
El salto de rendimiento es real (PageSpeed Insights a 100), y eso también ayuda al SEO.
13 min de lectura · Publicado el: 3 dic 2025 · Actualizado el: 21 ago 2026
Guía de Astro
Si llegaste desde búsqueda, lo más rápido es ir al artículo anterior o siguiente de esta misma serie.
Anterior
Búsqueda Pagefind en un blog Astro: guía completa, gratis, rápida y con soporte para chino
Te guío paso a paso para añadir búsqueda de texto completo gratis y rápida a tu blog Astro con Pagefind. Soporta chino, el índice pesa menos de 100 KB y la configuración toma 10 minutos: más barato y sencillo que Algolia.
Parte 16 de 18
Siguiente
Integra un sistema de comentarios en tu blog Astro: guía completa con Giscus, Waline y Twikoo
¿Comentarios en Astro? ¿Giscus, Waline o Twikoo? Esta guía práctica compara las tres opciones principales, incluye código de integración en Astro y solución para View Transitions. Configúralo en 10 minutos.
Parte 18 de 18



Comentarios
Inicia sesión con GitHub para dejar un comentario