После короткого перерыва после launch week вышел Astro 4.6 — мы вернулись к обычному графику! В релизе — новая ручная стратегия i18n-маршрутизации, экспериментальная CSRF-защита, новая функция dev toolbar и многое другое.
Основные новинки:
- Ручная стратегия i18n-маршрутизации
- Перемещение dev toolbar
- Экспериментально: CSRF-защита
- Улучшения cookies
- Устаревшая поддержка старых версий Node.js
Чтобы обновить существующий проект, используйте CLI @astrojs/upgrade. Или обновите вручную:
# Рекомендуется:npx @astrojs/upgrade
# Вручную:npm install astro@latestpnpm upgrade astro --latestyarn upgrade astro --latestManual routing strategy for internationalization
Astro 4.6 представляет ручную стратегию i18n-маршрутизации — полный контроль над маршрутизацией интернационализированного сайта, когда стандартная стратегия не подходит.
Для включения установите i18n.routing в astro.config.mjs в manual:
import { defineConfig } from "astro/config";
export default defineConfig({ i18n: { locales: ["en", "fr"], defaultLocale: "fr", routing: "manual", },});Затем добавьте middleware для обработки маршрутизации:
import { defineMiddleware } from "astro:middleware";import { redirectToDefaultLocale } from "astro:i18n";
// Example middleware that redirects all requests to the default locale apart for the /about pageexport const onRequest = defineMiddleware(async (context, next) => { if (context.url.startsWith("/about")) { return next(); } else { return redirectToDefaultLocale(context, 302); }});Альтернативно — импортируйте логику middleware Astro через новую функцию middleware из astro:i18n и расширяйте стандартную стратегию:
import { defineMiddleware, sequence } from "astro:middleware";import { middleware } from "astro:i18n"; // Astro's own i18n routing middleware
export const userMiddleware = defineMiddleware(() => { // Your custom middleware logic here});
export const onRequest = sequence( userMiddleware, middleware({ redirectToDefaultLocale: false, prefixDefaultLocale: true }))Подробнее: документация по интернационализации.
Ability to move the dev toolbar
Astro 4.6 позволяет перемещать dev toolbar в разные позиции внизу экрана. Полезно, если sticky header перекрывает toolbar, или если хотите другое расположение. Toolbar должен помогать, а не мешать! Спасибо Ming-jun Lu за этот запрошенный вклад!
Experimental: Support for CSRF protection
Astro 4.6 добавляет экспериментальную частичную поддержку CSRF-защиты. Функция под экспериментальным флагом и может измениться в будущих релизах.
Для включения установите experimental.security.csrfProtection в astro.config.mjs:
import { defineConfig } from "astro/config";
export default defineConfig({ experimental: { security: { csrfProtection: { origin: true, }, }, },});При включении Astro проверяет, что заголовок «origin», передаваемый современными браузерами, совпадает с URL каждого Request. Иначе — ответ 403 Forbidden.
Функция доступна только для страниц с on-demand рендерингом (SSR).
Cookies improvements
Благодаря Farzard хелпер удаления cookies (Astro.cookies.delete) теперь позволяет задавать больше атрибутов cookie, а не только path и domain. Небольшое, но полезное улучшение!
Deprecated support for older versions of Node.js
В соответствии с политикой поддержки Node.js эта версия Astro прекращает поддержку:
- Node.js 18 ниже 18.17.1
- Node.js 19 (нечётная версия)
- Node.js 20 ниже 20.3.0.
Решение принято после взвешенного рассмотрения — мы считаем, что это сделает Astro стабильнее и безопаснее для всех.
Устаревшие версии Node.js можно использовать до следующего major-релиза Astro (v5), но при установке могут появляться предупреждения, а отдельные функции — работать не так, как ожидается.
Bug Fixes
Как обычно, Astro 4.6 включает исправления и улучшения, не вошедшие в этот пост! Полные release notes.
