🍀 Astro 5.13: экспериментальные улучшения env variables, поддержка Chrome DevTools workspaces и многое другое!
В стартовом составе:
- Экспериментальный статический
import.meta.env - Экспериментальная поддержка Chrome DevTools workspace
- Несколько sitemap
- Экспериментальные hosted error pages с адаптером Node.js
- Поддержка enum в таблицах Astro DB
- Локальная поддержка Cloudflare KV
Чтобы обновить существующий проект, используйте CLI @astrojs/upgrade. Или обновите вручную:
# Рекомендуется:npx @astrojs/upgrade
# Вручную:npm install astro@latestpnpm upgrade astro --latestyarn upgrade astro --latestExperimental static import.meta.env
Переменные окружения сложны! astro:env — типобезопасная схема. Можно также process.env и import.meta.env — единственный способ до Astro 5.0, с логикой для старых версий.
Astro 5.13: флаг experimental.staticImportMetaEnv — поведение import.meta.env как у Vite. Заменяет rawEnvVariables. Станет дефолтом в Astro 6.0.
Сейчас непубличные import.meta.env заменяются на process.env; Astro может приводить типы ("true" → boolean). Флаг упрощает: без замены на process.env, без coercion — private vars всегда inline.
import { defineConfig } from "astro/config";
export default defineConfig({ experimental: { staticImportMetaEnv: true, rawEnvValues: true }});experimental static import.meta.env documentation. environment variables documentation.
Experimental Chrome DevTools workspace support
Chrome workspace folders сохраняют изменения из DevTools в код проекта — CSS без выхода из браузера!
Astro 5.13: chromeDevtoolsWorkspace — автоконфигурация workspace для проекта. Папка проекта как источник — подключите и редактируйте в Sources, сохраняется локально.
import { defineConfig } from 'astro/config';
export default defineConfig({ experimental: { chromeDevtoolsWorkspace: true }});Chrome DevTools workspace feature documentation.
Multiple sitemaps
@astrojs/sitemap включал внешние страницы в sitemap-index.xml. Новая опция customSitemaps — внешние sitemap вместе с Astro-generated entries.
Полезно для multi-framework на одном домене (example.com/blog/sitemap.xml от другого фреймворка):
import { defineConfig } from 'astro/config';import sitemap from '@astrojs/sitemap';
export default defineConfig({ site: 'https://example.com', integrations: [ sitemap({ customSitemaps: [ 'https://example.com/blog/sitemap.xml', 'https://example.com/helpcenter/sitemap.xml' ] }) ]});@astrojs/sitemap configuration.
Спасибо Gourav Khunger!
Experimental hosted error pages
@astrojs/node@9.4.0: экспериментальная загрузка пререндеренных custom error pages с любого хоста.
По умолчанию Astro загружает 404 с того же хоста, что и запрос. experimentalErrorPageHost — когда error page на другом хосте (reverse proxy, container):
import { defineConfig } from 'astro/config';import node from '@astrojs/node';
export default defineConfig({ adapter: node({ experimentalErrorPageHost: 'http://localhost:4321' })});Enum support in Astro DB tables
({ enum: ['happy', 'thrilled', 'over the moon'] }) — enum для text columns в Astro DB. Только для типов, без runtime validation.
import { column, defineTable } from 'astro:db';
const UserTable = defineTable({ columns: { id: column.number({ primaryKey: true }), name: column.text(), rank: column.text({ enum: ['user', 'mod', 'admin'] }) }});
type UserTableInferInsert = { id?: string; name: string; rank: "user" | "mod" | "admin";}Local support for Cloudflare KV
Cloudflare adapter: локальная поддержка Cloudflare Workers KV в astro dev. Drop-in для sessions. Можно подключить remote KV Namespace для production data в dev.
Bug fixes
С релиза 5.12 — changelog.
Community
Команда Astro:
Alexander Niebuhr, Ben Holmes, Caleb Jasik, Chris Swithinbank, Emanuele Stoppa, Erika, Florian Lefebvre, Fred Schott, Fuzzy, HiDeoo, Luiz Ferraz, Matt Kane, Matthew Phillips, Nate Moore, Reuben Tier, Sarah Rainsberger, and Yan Thomas
Спасибо Adam Matthiesen, Adrian Sieradzki, Aidan McAlister, Ariel K, Armand Philippot, Azushii, benosmac, Bjorn Lu, Brandon Ly, Brian Birtles, casungo, chaegumi, Coding in Public, ColoredCarrot, David Boyne, DNEK, Felix Schneider, Feng Yu, Gourav Khunger, Jacob Jenkins, Jacob Pretorius, Jat, Jonas Geiler, Junseong Park, Kayla Akyüz, Kian, knj, Kyosuke Nakamura, LEF, Louis Escher, Luke Eades, Martin Trapp, Mateusz Bocian, Matthew Justice, Michal Piechowiak, Oliver Speir, Paul Valladares, Pier Bover, pioupia, Rezix, Sebastian Beltran, Shinya Fujino, Souleimane Konate, Thomas Bonnet, Tiago Vilela, and vrabe


