Astro 5.4: оптимизация удалённых изображений в Markdown, усиленная безопасность dev/preview серверов, RegExp для Vercel ISR excludes и многое другое!
🖼️ Идеальный релиз для вас:
- Оптимизация удалённых изображений в Markdown
- Экспериментальная поддержка адаптивных изображений в Markdown
- Allowlist хостов для dev и preview серверов
- Поддержка RegExp для Vercel ISR excludes
- Новые хелперы конфигурации и опции сборки
Чтобы обновить существующий проект, используйте CLI @astrojs/upgrade. Или обновите вручную:
# Рекомендуется:npx @astrojs/upgrade
# Manual:npm install astro@latestpnpm upgrade astro --latestyarn upgrade astro --latestRemote image optimization in Markdown
Сервис изображений Astro уже оптимизировал локальные Markdown-изображения. Теперь то же для удалённых!
Раньше синтаксис  с удалёнными изображениями проходил без обработки — в отличие от компонента Image, без оптимизации для CMS и внешних источников.
В Astro 5.4 сервис изображений автоматически обрабатывает и оптимизирует удалённые изображения в Markdown и MDX. Все преимущества оптимизации Astro без изменения способа написания контента.
Функция включена по умолчанию — существующие удалённые изображения в Markdown и MDX оптимизируются автоматически. Для отказа для конкретных изображений используйте HTML <img> вместо Markdown.
Изображения в public/ по-прежнему не обрабатываются — обычное поведение Astro.
Спасибо PolyWolf за этот вклад!
Experimental responsive image support in Markdown
Ранее экспериментальные адаптивные изображения полностью поддерживались в компонентах Image и Picture. В Astro 5.4 поддержка расширена на Markdown и MDX!
При experimental.responsiveImages в конфиге Astro генерирует адаптивные изображения в Markdown и MDX с правильными свойствами и стилями.
Снова спасибо PolyWolf!
Allowlist hosts for dev and preview servers
Для безопасности Astro 5.4 добавляет опцию ограничения hostname, на которые отвечают dev и preview серверы.
Новая опция server.allowedHosts — список разрешённых hostname. Проверяется заголовок Host входящих запросов. Защита от DNS rebinding атак, например GHSA-vg6x-rcgg-rjx6.
import {defineConfig} from "astro/config";
export default defineConfig({ server: { allowedHosts: ['hello.world.example.local', 'hello.example.local'] }})Или в CLI:
astro dev --allowed-hosts=hello.world.example.local,hello.example.localastro preview --allowed-hosts=hello.world.example.local,hello.example.localИспользуйте только домены под вашим контролем. Сторонние домены — риск безопасности.
Подробности реализации — в документации Vite.
RegExp support for Vercel ISR excludes
При Incremental Static Regeneration (ISR) с адаптером Vercel больше гибкости в определении маршрутов, исключаемых из ISR-кеша.
Раньше каждый маршрут в isr.exclude перечислялся явно — неудобно при множестве SSR-маршрутов:
import vercel from '@astrojs/vercel';
export default defineConfig({ output: 'server', adapter: vercel({ isr: { exclude: [ '/api/users', '/api/posts', '/api/comments', // ... many more API routes ] } })});Теперь регулярные выражения для паттерн-исключений:
import vercel from '@astrojs/vercel';
export default defineConfig({ output: 'server', adapter: vercel({ isr: { exclude: [ '/preview', // Specific route '/auth/[page]', // Dynamic route /^\/api\/.+/, // RegExp: all routes starting with /api/ ] } })});Проще управлять ISR-исключениями в масштабе.
Спасибо Slawek Kolodziej!
New config helpers and build options
Astro 5.4 добавляет API для программной работы с Astro — особенно для тестов и скриптов.
Configuration helpers
Два хелпера из astro/config:
mergeConfig: слияние частичных конфигураций поверх базовой по правиламupdateConfigдля интеграций.validateConfig: проверка валидности конфигурации Astro и заполнение дефолтов.
Полезно авторам интеграций и скриптам, манипулирующим конфигурацией.
Programmatic build options
API build принимает второй опциональный аргумент BuildOptions:
devOutput: приtrue— dev-подобная сборка. По умолчаниюfalse.teardownCompiler: завершать WASM компилятор после сборки. По умолчаниюtrue.
Больше контроля при программных сборках — тесты и кастомные пайплайны.
Bug fixes
Как всегда, с релиза 5.3 мы усердно исправляли проблемы. Все детали — в changelog.
Thanks
Спасибо всем контрибьюторам, включая Emanuele Stoppa, Luiz Ferraz, Sarah Rainsberger, HiDeoo, Yan Thomas, PolyWolf, Slawek Kolodziej, и многих других.
Ждём, что вы построите с Astro 5.4! Вопросы и комментарии — в Astro Discord.
