¡Astro 6.4 está aquí! En el menú de hoy: un pipeline de Markdown conectable, un nuevo procesador de Markdown basado en Rust para que pruebes, y helpers para facilitar el uso de advanced routing experimental con Cloudflare.
Explora qué hay de nuevo en este lanzamiento:
- Nueva API
markdown.processor - Builds de Markdown más rápidos con Sätteri
- Helpers de Cloudflare para advanced routing
Para actualizar un proyecto existente, usa la herramienta CLI automatizada @astrojs/upgrade. Alternativamente, actualiza manualmente ejecutando el comando de actualización para tu gestor de paquetes:
# Recommended:npx @astrojs/upgrade
# Manual:npm install astro@latestpnpm upgrade astro --latestyarn upgrade astro --latestNueva API markdown.processor
El pipeline de Markdown de Astro siempre se ha construido en torno a unified (remark, rehype, y amigos). Ese ecosistema es potente, teniendo miles de plugins disponibles, pero quizás no es de tu gusto. Astro 6.4 añade una nueva opción de configuración markdown.processor que te permite intercambiar ese pipeline enteramente.
El procesador por defecto sigue siendo unified(), así los proyectos existentes siguen funcionando sin cambios. Tus plugins de remark y rehype siguen comportándose igual, pero ahora se configuran directamente en el procesador, en lugar de en la configuración markdown de nivel superior:
import { defineConfig } from 'astro/config';import { unified } from '@astrojs/markdown-remark';import remarkToc from 'remark-toc';
export default defineConfig({ markdown: { processor: unified({ remarkPlugins: [remarkToc], }), },});Las opciones existentes de nivel superior markdown.remarkPlugins, markdown.rehypePlugins, markdown.remarkRehype, markdown.gfm, y markdown.smartypants siguen funcionando, pero ahora están deprecadas en favor de pasarlas a unified({...}), y serán eliminadas en Astro 8.0.
Para más información, consulta la guía de Markdown actualizada.
Builds de Markdown más rápidos con Sätteri
Una API de procesador conectable también significa que Astro puede incluir otros procesadores de Markdown. Astro 6.4 introduce un nuevo paquete @astrojs/markdown-satteri, con un nuevo procesador basado en Sätteri, un pipeline de Markdown y MDX escrito en Rust.
Sätteri es mucho más rápido que el pipeline basado en unified por defecto, e implementa muchas características de Markdown nativamente que previamente requerían plugins. En nuestras propias pruebas, cambiar el sitio de docs de Astro y Cloudflare a Sätteri recortó más de un minuto de sus respectivos tiempos de build. Para probarlo, instala el paquete y configúralo como tu procesador:
npm install @astrojs/markdown-satteriimport { defineConfig } from 'astro/config';import { satteri } from '@astrojs/markdown-satteri';
export default defineConfig({ markdown: { processor: satteri({ features: { directive: true }, }), },});Sätteri no ejecuta plugins de remark o rehype. Si dependes de plugins del ecosistema unified, necesitarás mantenerte en unified() por ahora o portarlos a plugins MDAST o HAST de Sätteri.
Esperamos hacer de Sätteri el procesador de Markdown por defecto en una futura versión major de Astro. Para dar feedback sobre el procesador de Rust y la nueva API, consulta el Native Markdown / MDX RFC.
Helpers de Cloudflare para advanced routing
Si estás usando advanced routing experimental (añadido en Astro 6.3) en Cloudflare, @astrojs/cloudflare ahora incluye un helper cf() que conecta las partes específicas de Cloudflare por ti: inyección de SESSION KV binding, serving de static assets vía el binding ASSETS, locals.cfContext, dirección del cliente desde cf-connecting-ip, waitUntil, y prerendered error pages.
Con un custom fetch handler, usa cf() desde @astrojs/cloudflare/fetch:
import { astro, FetchState } from 'astro/fetch';import { cf } from '@astrojs/cloudflare/fetch';
export default { async fetch(request: Request, env: Env, ctx: ExecutionContext) { const state = new FetchState(request); const asset = await cf(state, env, ctx); if (asset) return asset; return astro(state); },};Con Hono, usa cf() desde @astrojs/cloudflare/hono como middleware.
import { Hono } from 'hono';import { actions, middleware, pages, i18n } from 'astro/hono';import { cf } from '@astrojs/cloudflare/hono';
const app = new Hono<{ Bindings: Env }>();
app.use(cf());app.use(actions());app.use(middleware());app.use(pages());app.use(i18n());
export default app;Otras mejoras
Para una lista completa de correcciones de bugs y mejoras menores, consulta el changelog completo.
Comunidad
El core team de Astro es:
Alexander Niebuhr , Armand Philippot , Chris Swithinbank , Emanuele Stoppa , Erika , Florian Lefebvre , Fred Schott , HiDeoo , Luiz Ferraz , Matt Kane , Matthew Phillips , Reuben Tier , Sarah Rainsberger , and Yan Thomas .
Gracias a todos los demás contribuidores que ayudaron a hacer posible Astro 6.4 con adiciones y mejoras de código y documentación, incluyendo:
Alexander Flodin, Alexis Aguilar, Arnas Donauskas, Barry, David Large, divyeshb13, Dor Alagem, Eli Kent [SSW], Eric Mika, Felipe Arce, Felix Schneider, fkatsuhiro, Great Journey, Harsh Agarwal, helio-cf, Henri Koskenranta, Igor Koop, Jon Ege Ronnenberg, Joost de Valk, Jordan Demaison, Junseong Park, knj, LongYC, Louis Escher, Matt Wicks [SSW], Mochammad Farros Fatchur Roji, oab24413gmai, ocavue, Quetzal Rivera, Rafael Yasuhide Sudo, randomguy-2650, Sakku 🦉, Shinya Fujino, Tarik, Thomas Bonnet, Vincent 🌿, vrabe, WavyCat, Zubair Ibn Zamir, and 芋


