Astro 5.12

Автор
Matt Kane

⚽ Astro 5.12 забивает гол — улучшенный Netlify dev experience, поддержка TOML в content loaders и многое другое!

В стартовом составе:

Чтобы обновить существующий проект, используйте CLI @astrojs/upgrade. Или обновите вручную:

# Рекомендуется:
npx @astrojs/upgrade
# Вручную:
npm install astro@latest
pnpm upgrade astro --latest
yarn upgrade astro --latest

TOML support for content loaders

Astro 5.12 добавляет нативную поддержку TOML в content collections. file() и glob() loaders уже поддерживали Markdown, JSON и YAML — теперь и TOML.

Конфигурация не нужна: добавьте .toml в коллекцию со встроенным loader. Например:

src/content/spacecraft/apollo.toml
name = "Apollo"
launch_date = "1969-07-16"
crew = ["Neil Armstrong", "Buzz Aldrin", "Michael Collins"]

Коллекция с TOML-файлами:

src/content/config.ts
import { defineCollection, z } from 'astro:content';
import { glob } from 'astro/loaders';
const spacecraft = defineCollection({
loader: glob({ pattern: '*.toml', base: './src/content/spacecraft' }),
schema: z.object({
name: z.string(),
launch_date: z.coerce().date(),
crew: z.array(z.string()),
}),
});
export const collections = { spacecraft };

Доступ к TOML-контенту в компонентах:

src/pages/spacecraft.astro
---
import { getCollection } from 'astro:content';
const spacecraft = await getCollection('spacecraft');
---
<ul>
{
spacecraft.map((item) => (
<li>
<h2>{item.name}</h2>
<p>Launch Date: {item.launch_date.toLocaleDateString()}</p>
<p>Crew: {item.crew.join(', ')}</p>
</li>
))
}
</ul>

New Netlify dev experience

Адаптер Netlify теперь на Vite-плагине Netlify в development — вся платформа и примитивы Netlify на localhost!

The power of Netlify on localhost

Раньше примитивы Netlify в dev требовали Netlify CLI. Новый адаптер встраивает возможности в dev-сервер Astro.

После обновления адаптера astro dev даёт:

Configuring dev features

Опция devFeatures в конфигурации адаптера Netlify:

  • images: локальный Netlify Image CDN в dev. По умолчанию true.
  • environmentVariables: автозаполнение dev-сервера env vars с сайта Netlify. По умолчанию false.
astro.config.mjs
import { defineConfig } from 'astro/config'
import netlify from '@astrojs/netlify'
export default defineConfig({
adapter: netlify({
devFeatures: {
environmentVariables: true,
images: false,
},
})
})

Наслаждайтесь Netlify-вкусом дома!

Спасибо Eduardo Bouças и chee rabbits из Netlify. Особая благодарность chee за участие в этом посте.

Experimental raw environment values

Новая экспериментальная опция отключает автоматическое приведение типов значений env vars в import.meta.env. По умолчанию Astro конвертирует "true", "false", "1", "0" в соответствующие типы — неожиданно, т.к. env vars обычно строки.

Согласовано с обработкой Vite; вероятно станет дефолтом в будущем мажоре.

astro.config.mjs
export default defineConfig({
experimental: {
rawEnvValues: true,
},
});

Только import.meta.env, не влияет на astro:env и типобезопасные переменные.

Спасибо Adam Langbert!

Bug fixes

Как всегда, с релиза 5.11 мы усердно исправляли проблемы. Все детали — в 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 Langbert, Adam Matthiesen, Adit Sachde, Anmoti, Armand Philippot, chee, coderfee, Dixon Sean Low Yan Feng, Eduardo Bouças, Farhad, Junseong Park, Kenichi Nakamura, knj, liruifengv, Martin Trapp, Matthew Justice, Nin3, Paul Valladares, Philippe Serhal, Reuben Tier, Rezix, Robbie Wagner, ryu, Surya Kencana Putra, Thomas Bonnet, and Toby Nguyen