Вышел Astro 6.1! Astro 6.1 даёт глобальный контроль над кодированием изображений с дефолтами Sharp по кодекам — настройте JPEG, WebP, AVIF и PNG один раз в конфиге Astro вместо каждого изображения.
Что нового в этом релизе:
- Дефолты Sharp по кодекам изображений
- Расширенная конфигурация SmartyPants
- i18n fallback routes для интеграций
- Плавнее view transitions на мобильных
- Предупреждение о совместимости с Vite 8
- Исправления гидратации React
- CSRF-защита за reverse proxy
Чтобы обновить существующий проект, используйте CLI @astrojs/upgrade. Или обновите вручную:
# Рекомендуется:npx @astrojs/upgrade
# Вручную:npm install astro@latestpnpm upgrade astro --latestyarn upgrade astro --latestSharp codec-specific image defaults
Sharp, встроенный сервис изображений Astro, всегда поддерживал тонкие опции кодирования — mozjpeg для JPEG, effort для WebP и AVIF, уровни сжатия для PNG. Дефолты Sharp отлично подходят большинству проектов, но для единообразных настроек на большом числе изображений единственным вариантом была настройка каждого <Image /> отдельно.
Astro 6.1 добавляет image.service.config для установки дефолтов по кодекам один раз в конфиге Astro — они применяются ко всем изображениям при сборке:
import { defineConfig } from 'astro/config';
export default defineConfig({ image: { service: { config: { jpeg: { mozjpeg: true }, webp: { effort: 6, alphaQuality: 80 }, avif: { effort: 4, chromaSubsampling: '4:2:0' }, png: { compressionLevel: 9 }, }, }, },});Per-image quality по-прежнему имеет приоритет при установке, поэтому глобальные дефолты и per-image переопределения работают вместе без конфликтов. Полный список опций см. в справочнике конфигурации image service.
Advanced SmartyPants configuration
Если ваш Markdown-контент для неанглоязычной аудитории, вы, вероятно, замечали, что SmartyPants — библиотека Astro для автоматической типографической пунктуации — предполагает английские конвенции. Французские кавычки-ёлочки («»), немецкие кавычки („") или классическая обработка em-dash были недоступны без полного отключения SmartyPants.
Astro 6.1 открывает полную конфигурацию SmartyPants — можно настроить каждое преобразование отдельно:
import { defineConfig } from 'astro/config';
export default defineConfig({ markdown: { smartypants: { dashes: 'oldschool', openingQuotes: { double: '«', single: '‹' }, closingQuotes: { double: '»', single: '›' }, ellipses: 'unspaced', quotes: false, }, },});Полный список настроек см. в опциях retext-smartypants.
i18n fallback routes for integrations
Astro 6.1 экспонирует fallbackRoutes на каждом маршруте в хуке astro:routes:resolved, давая интеграциям доступ к дополнительным маршрутам, которые Astro генерирует для локалей без собственного контента при fallbackType: 'rewrite'.
{ 'astro:routes:resolved': ({ routes }) => { for (const route of routes) { const fallbacks = route.fallbackRoutes.map((f) => f.pathname); console.log(route.pathname, '->', fallbacks); // '/about/' -> ['/fr/about/', '/de/about/'] } }}Мы уже использовали это в @astrojs/sitemap, который теперь автоматически включает i18n fallback-страницы в sitemap. Раньше эти маршруты были невидимы для интеграций, и fallback-страницы молча отсутствовали в sitemap.
Подробнее о i18n fallback routing в документации Astro.
Other improvements
- Плавнее view transitions на мобильных — клиентский роутер теперь пропускает анимации view transition, когда браузер уже даёт свой визуальный переход, например свайп в iOS Safari. Это устраняет двойную анимацию при навигации жестами назад и вперёд. (#16025)
- Предупреждение о совместимости с Vite 8 — Astro теперь предупреждает при запуске dev-сервера, если Vite 8 обнаружен на top level проекта. Команда
astro add cloudflareтакже автоматически добавляет"overrides": { "vite": "^7" }вpackage.json, предотвращая типичный краш при пакетах вроде@tailwindcss/vite. (#16062) - Исправления гидратации React — несколько исправлений ошибок гидратации React, включая условный рендеринг слотов и несоответствия
experimentalReactChildren. (#15378, #15146) - CSRF-защита за reverse proxy —
checkOriginтеперь корректно читаетX-Forwarded-Protoво времяastro devза TLS-terminating reverse proxy, предотвращая ложные 403 при отправке форм. (#16043)
Полный список исправлений и мелких улучшений см. в полном 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.1 возможным — кодом, документацией и улучшениями, включая:
0xRozier, Adam Matthiesen, Adam Page, Ahmad Yasser, AitorMT, Alex Dombroski, B Sai Thrishul, bashrocks, Ben Limmer, Bernd Strehl, Burra Karthikeya, Calvin Liang, chaegumi, Chase McCoy, Corbin Crutchley, Daniel Bodky, Daniil Sivak, Dario Piotrowicz, dataCenter430, Dawid Gaweł, Desel72, Em Poulter, Eveeifyeve, farshad, Felix Schneider, Felmon, fkatsuhiro, Giray, Gokhan Kurt, Greg L. Turnquist, hank00111, Haz, Jack Lukic, jahndan, Jason P. Cochrane, Jimmy, Junseong Park, Kedar Vartak, Kevin Z, Koji Wakamiya, Kumar Gautam, Kyle McLean, ld-web, Leif Marcus, Louis Escher, Martin Trapp, Matthew Justice, Natan Sągol, Oliver Speir, oliverlynch, Ossaid, paul valladares, Paweł Grzybek, pierreeurope, Rafael Yasuhide Sudo, Raymond Camden, Sakku 🦉, Sam Richard, Sanjaiyan Parthipan, Sebastian Beltran, Shinya Fujino, Sora, Tay, teinett, Thomas Bonnet, Tom Callahan, Tomasz Cz-Sokołow, Tristan Bessoussa, Vagno, vrabe, Will (liruifengv), xyamzw, Yevhen Amelin, マルコス, and もっちー


