Вышел Astro 6.4! В этом релизе: подключаемый пайплайн Markdown, новый Rust-процессор Markdown для экспериментов и хелперы для экспериментального advanced routing с Cloudflare.
Что нового в этом релизе:
- Новый API
markdown.processor - Более быстрая сборка Markdown с Sätteri
- Хелперы Cloudflare для advanced routing
Чтобы обновить существующий проект, используйте CLI @astrojs/upgrade. Или обновите вручную:
# Рекомендуется:npx @astrojs/upgrade
# Вручную:npm install astro@latestpnpm upgrade astro --latestyarn upgrade astro --latestNew markdown.processor API
Пайплайн Markdown в Astro всегда строился вокруг unified (remark, rehype и др.). Эта экосистема мощная — тысячи плагинов, — но, возможно, не по вашему вкусу. Astro 6.4 добавляет опцию markdown.processor, позволяющую полностью заменить этот пайплайн.
Процессор по умолчанию по-прежнему unified(), поэтому существующие проекты работают без изменений. Ваши remark- и rehype-плагины ведут себя так же, но теперь настраиваются напрямую на процессоре, а не в top-level markdown:
import { defineConfig } from 'astro/config';import { unified } from '@astrojs/markdown-remark';import remarkToc from 'remark-toc';
export default defineConfig({ markdown: { processor: unified({ remarkPlugins: [remarkToc], }), },});Существующие top-level опции markdown.remarkPlugins, markdown.rehypePlugins, markdown.remarkRehype, markdown.gfm и markdown.smartypants по-прежнему работают, но помечены как устаревшие в пользу передачи их в unified({...}) и будут удалены в Astro 8.0.
Подробнее см. обновлённое руководство по Markdown.
Faster Markdown builds with Sätteri
Подключаемый API процессора также означает, что Astro может поставлять другие процессоры Markdown. Astro 6.4 представляет пакет @astrojs/markdown-satteri с новым процессором на основе Sätteri — пайплайна Markdown и MDX на Rust.
Sätteri значительно быстрее пайплайна на unified и нативно реализует многие возможности Markdown, для которых раньше нужны были плагины. В наших тестах переход сайтов Astro и Cloudflare docs на Sätteri сократил время сборки более чем на минуту. Чтобы попробовать, установите пакет и укажите его как процессор:
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 не запускает remark- и rehype-плагины. Если вы зависите от плагинов экосистемы unified, пока оставайтесь на unified() или портируйте их в плагины Sätteri MDAST или HAST.
Мы надеемся сделать Sätteri процессором Markdown по умолчанию в будущей мажорной версии Astro. Чтобы дать обратную связь по Rust-процессору и новому API, см. RFC Native Markdown / MDX.
Cloudflare helpers for advanced routing
Если вы используете экспериментальный advanced routing (добавлен в Astro 6.3) на Cloudflare, @astrojs/cloudflare теперь поставляет хелпер cf(), который подключает специфичные для Cloudflare части: инъекцию SESSION KV binding, раздачу статики через ASSETS binding, locals.cfContext, клиентский адрес из cf-connecting-ip, waitUntil и пререндеренные страницы ошибок.
С кастомным fetch handler используйте cf() из @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); },};С Hono используйте cf() из @astrojs/cloudflare/hono как 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;Other improvements
Полный список исправлений и мелких улучшений см. в полном changelog.
Community
Команда Astro:
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.
Спасибо всем остальным контрибьюторам, которые помогли сделать Astro 6.4 возможным — кодом, документацией и улучшениями, включая:
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 芋


