Мы движемся к релизу Nuxt 4, но при этом мы не задерживаем прогресс и в Nuxt v3.12.
🚀 Тестирование изменений Nuxt 4
Nuxt 4 уже на горизонте, и теперь можно протестировать изменения в поведении, которые появятся в следующем крупном релизе (#26925), установив опцию в вашем файле nuxt.config
:
export default defineNuxtConfig({
future: {
compatibilityVersion: 4,
},
})
По мере того как мы объединяли PR для Nuxt 4, мы включали их под этим флагом. Мы стремимся к обратной совместимости насколько это возможно - наша тестовая матрица запускает одни и те же фиксы в режиме совместимости как с v3, так и с v4.
Здесь можно многое рассказать, поскольку 10+ различных PR и изменений поведения задокументированы и тестируются, но для получения полной информации, включая шаги по переходу, смотрите документацию по обновлению на v4.
Мы будем очень благодарны за раннее тестирование того, что появится в Nuxt 4! 🙏
📜 Автоматическая установка Nuxt Scripts
Мы постепенно работаем над релизом Nuxt Scripts. В настоящее время он находится в стадии публичного предварительного просмотра, но мы уже близки к публичному релизу, поэтому мы добавили несколько заглушек для композаблов, которые (при использовании) будут предлагать установить модуль @nuxt/scripts
.
👉 Следите за запуском - и за статьей, в которой будет рассказано больше!
🌈 Авто-регистрация слоев и исправление ошибок
Как и в случае с ~/modules
, любые слои в вашем проекте в директории ~/layers
теперь будут автоматически регистрироваться как слои в вашем проекте (#27221).
Мы также теперь корректно загружаем зависимости слоев, что должно решить ряд проблем с монорепозиториями и установками git (#27338).
🌐 Встроенные улучшения доступности
Теперь у нас есть встроенный компонент <NuxtRouteAnnouncer>
и соответствующий композабл useRouteAnnouncer
, которые будут добавляться по умолчанию в новые шаблоны Nuxt в дальнейшем.
Для получения подробной информации смотрите оригинальный PR (#25741) и документацию.
Мы продолжаем работать над nuxt/a11y
- ожидайте новых новостей об этом в будущем!
🔥 Улучшения производительности
Мы также улучшили производительность, часть улучшений скрываются за флагом compatibilityVersion: 4
, например, отказ от глубоко реактивных полезных нагрузок asyncData.
К значительным улучшениям относится дедупликация модулей (#27475) - это касается в основном пользователей слоев, которые указывают модули в своих слоях. В одном проекте мы увидели улучшение на 30 с лишним секунд при запуске Nuxt.
Мы также улучшили время запуска dev-сервера Vite, исключив общие зависимости ESM из предварительного бандлинга, и советуем авторам модулей сделать то же самое (#27372).
Мы улучшили детерминизм чанков, так что последовательные сборки должны быть менее склонны иметь полностью разные хэши чанков (#27258).
Кроме того, в серверных билдах мы использовали tree-shake для client-only композаблов (#27044) и уменьшили размер полезной нагрузки серверных компонентов (#26863).
👨👩👧👦 Поддержка нескольких приложений
Мы внесли несколько изменений, которые приближают нас к поддержке нескольких приложений в Nuxt, включая экспериментальный флаг multiApp
(#27291) и возможность параллельного запуска нескольких экземпляров приложений Nuxt во время выполнения (#27068).
Хотя это еще не готово, пожалуйста, следите за развитием событий на трекере проблем, и не стесняйтесь вносить свой вклад, если это вам интересно.
⛑️ DX побеждает
Теперь в журналах dev-сервера сериализуется больше информации, включая VNodes (#27309) и URLs. Мы также исправили ошибку, которая могла привести к замораживанию dev-сервера.
При доступе к приватному runtime-конфигу в браузере мы теперь сообщаем вам об этом более информативным сообщением об ошибке (#26441).
🪨 Стабилизирующие улучшения
Мы удалили некоторые стабилизированные экспериментальные опции, которые, по нашему мнению, больше не нуждаются в настройке:
experimental.treeshakeClientOnly
(включена по умолчанию с v3.0.0)experimental.configSchema
(включена по умолчанию с v3.3.0)experimental.polyfillVueUseHead
(отключен с v3.4.0) - реализуется на клиентской части с помощью pluginexperimental.respectNoSSRHeader
(отключен с версии 3.4.0) - реализуется на клиентской части с помощью server middleware
Мы также включили scanPageMeta
по умолчанию (#27134). Это извлекает любые метаданные страницы из вашего макроса definePageMeta
и делает их доступными для модулей (например, @nuxtjs/i18n
), чтобы они могли их дополнить.
Это открывает гораздо лучшую интеграцию модулей и типизированной маршрутизации, но потенциально требует затрат на производительность, поэтому, если у вас возникнут какие-либо проблемы, пожалуйста, напишите об этом.
💪 Улучшения типизации
Теперь у нас есть поддержка типизированных слотов #fallback
в серверных компонентах (#27097).
Мы также улучшили некоторые параметры по умолчанию в генерируемом вами файле tsconfig.json
, включая установку module: 'preserve'
, если у вас локально установлена версия TypeScript v5.4 (см. документацию) - см. #26667, #27485.
📦 Улучшения для авторов модулей/опытных пользователей
Мы добавили ряд улучшений типов для авторов модулей, включая:
- поддержка типизированных опций модуля в
installModule
(#26744) - возможность указать совместимость с некоторыми сборщиками (vite/webpack) в опциях модуля (#27022)
- новый хук
onPrehydrate
для подключения к циклу гидратации браузера (#27037) - возможность доступа и обновления разрешенной runtime-конфигурации внутри модулей с новыми утилитами
useRuntimeConfig
иupdateRuntimeConfig
(#27117)
🎨 Инлайн UI шаблоны
Если вы раньше использовали @nuxt/ui-templates
, то вам стоит знать, что мы перенесли их из отдельного репозитория в монорепозиторий nuxt/nuxt. (Это чисто рефактор, а не изменение, хотя вы можете ожидать некоторые новые дизайны для Nuxt v4).
✅ Обновление
Как обычно, наша рекомендация по обновлению - следующая команда:
npx nuxi@latest upgrade --force
Это также обновит ваш .lockfile и гарантирует, что вы получите обновления от других зависимостей, на которые полагается Nuxt, особенно в экосистеме unjs.
Полная информация о релизе
Огромное спасибо 75+ контрибьюторам и членам сообщества Nuxt, которые приняли участие в создании этого релиза. ❤️
Наконец, спасибо, что дочитали до этого момента! Мы надеемся, что вам понравится v3.12, и, пожалуйста, дайте нам знать, если у вас есть какие-либо отзывы или проблемы. 🙏
Счастливого Nuxting'а ✨
Прекращение поддержки (EOL) Nuxt 2
Nuxt 2 прекратит поддержку (EOL) 30 июня 2024 года. Мы сотрудничаем с HeroDevs, предлагая бесконечную поддержку (NES).
Обновленная интеграция Nuxt ESLint
Мы переработали наши интеграции ESLint для поддержки ESLint v9 с flat config, а также новый модуль с гораздо большими возможностями.