De Hugo a Astro: mudando el blog

Este sitio llevaba tiempo pidiéndome una reforma. Hugo hacía bien su trabajo y el blog cargaba rápido, pero yo cada vez tenía más ganas de tocar cosas: una galería de fotos, algún componente interactivo, un diseño que no dependiera tanto de un tema… Al final pasaba más tiempo buscando cómo encajar esos cambios en las plantillas que haciéndolos.
Así que aproveché que todavía había poco contenido y me mudé a Astro.
El problema no era Hugo
Hugo sigue siendo una opción estupenda para publicar un sitio estático. Compila a una velocidad absurda, no necesita todo el ecosistema de Node y tiene temas muy buenos. Si solo quisiera escribir entradas en Markdown y olvidarme del resto, probablemente no habría cambiado nada.
Lo que me empujó a salir fue la fricción al añadir cosas propias. En cuanto una idea se apartaba un poco de lo que ofrecía el tema, acababa repartiendo código entre plantillas, parciales y JavaScript añadido a mano. Se podía hacer, claro, pero ya no me resultaba agradable mantenerlo.
Por qué acabé en Astro
Astro también genera HTML estático, así que no tenía que renunciar a una web sencilla y rápida. La diferencia es que su forma de trabajar me resulta mucho más familiar: componentes, JavaScript durante la construcción y CSS cerca del marcado al que pertenece.
Hay varias cosas que me hicieron decidirme:
- Los archivos
.astropermiten juntar marcado, estilos y lógica sin convertir toda la página en una aplicación JavaScript. - Las Content Collections ponen algo de orden en los Markdown y validan sus metadatos.
- RSS, MDX o los iconos se añaden sin demasiado rodeo.
- El resultado que se publica sigue siendo HTML estático.
No necesitaba ninguna de estas cosas por separado. Lo que buscaba era poder combinarlas sin pelearme con el proyecto cada vez.
La mudanza
Como el blog estaba casi vacío, mover el contenido fue la parte fácil. Los Markdown pasaron prácticamente tal cual; solo tuve que adaptar el frontmatter y crear los esquemas de las colecciones.
Sí cambiaron las direcciones de las entradas: antes vivían bajo /posts/nombre y ahora están en /blog/nombre. Para no dejar enlaces antiguos apuntando a ninguna parte añadí esta redirección en public/_redirects, que Cloudflare Pages aplica al desplegar:
/posts/* /blog/:splat 301
El resto del trabajo estuvo en la casa nueva. Preparé un diseño propio, añadí el fotolog con una página para cada imagen, recuperé el soporte para Mermaid y dejé la optimización de fotografías en manos de un pequeño script con Sharp. También rehice la navegación para que funcionara bien en móvil.
Después del cambio
La web sigue siendo estática y rápida, que era lo importante, pero ahora me resulta bastante más fácil probar ideas. Si mañana quiero añadir una página rara o darle otro tratamiento a las fotos, no tengo que convencer a un tema de que me deje hacerlo.
Hugo no se quedó corto; simplemente yo quería cacharrear más de la cuenta. Para este sitio, Astro me deja hacerlo con menos fricción, y esa ha sido toda la razón de la mudanza.