Nuxt 3.14
За кулисами ведется активная работа по подготовке к выпуску Nuxt v4 (особенно на стороне unjs
в связи с подготовкой к Nitro v3!)
⚡️ Более быстрый запуск за счет jiti
Загрузка файла конфигурации Nuxt, а также модулей и другого кода во время сборки теперь осуществляется с помощью jiti
v2. Вы можете узнать больше в информации о релизе jiti v2, но одна из самых важных частей — это нативный импорт модулей esm (где это возможно), что должно означать более быстрый запуск ✨
📂 Директория shared для кода и типов, совместно используемых клиентом/сервером
Вы никогда не должны импортировать код приложения Vue в код Nitro (или наоборот). Но это приводит к возникновению проблем, когда дело доходит до совместного использования типов или утилит, которые не полагаются на контексты Nitro/Vue.
Для этого теперь есть новая директория shared/
(#28682). Вы не можете импортировать код Vue или Nitro в файлы в этой директории, но из нее производится автоматический импорт (если вы используете compatibilityVersion: 4
), который вы можете использовать во всем остальном приложении.
При необходимости вы можете использовать новый псевдоним #shared
, который указывает на эту директорию.
Директория shared находится рядом с server/
. (Если вы используете compatibilityVersion: 4
, это означает, что она не находится внутри app/
.)
🦀 Билдер rspack
Мы рады объявить о новом билдере первого класса для Nuxt для rspack
. Он все еще экспериментальный, но мы переработали внутреннюю виртуальную файловую систему Nuxt на использование unplugin
, чтобы сделать это возможным.
Дайте нам знать, если вам понравилось, и не стесняйтесь сообщать о любых проблемах, с которыми вы столкнулись.
👉 Чтобы попробовать, вы можете использовать этот стартер или просто установить @nuxt/rspack-builder
и указать builder: 'rspack'
в файле конфигурации Nuxt.
✨ Новые композаблы
Теперь есть новые композаблы useResponseHeader
и useRuntimeHook
(#27131 и #29741).
🔧 Новые утилиты модуля
Теперь у нас есть новая утилита addServerTemplate
(#29320) для добавления виртуальных файлов для доступа внутри роутов Nitro в рантайме.
🚧 Изменения v4
Мы объединили некоторые изменения, которые вступают в силу только с compatibilityVersion: 4
, но на которые вы можете согласиться раньше.
- Ранее, если у вас был компонент типа
~/components/App/Header.vue
, он был бы виден в инструментах разработчика как<Header>
. Начиная с версии 4, он будет виден как<AppHeader>
, но это является опцией, чтобы избежать поломки<KeepAlive>
, который вы могли реализовать. (#28745). - Nuxt сканирует метаданные страниц из файлов перед вызовом
pages:extend
. Но это привело к некоторому запутанному поведению, так как страницы, добавленные в этот момент, в конечном итоге не учитывают свои метаданные. Поэтому теперь мы не сканируем метаданные перед вызовомpages:extend
. Вместо этого у нас есть новый хукpages:resolved
, который вызывается послеpages:extend
, после того, как все страницы были дополнены своими метаданными. Я бы рекомендовал включить это, установивexperimental.scanPageMeta
наafter-resolve
, так как это решает ряд ошибок.
🗺️ Дорожная карта к v3.15
Мы не успели к v3.14, но в следующем минорном релизе вы можете ожидать (помимо прочего):
- автоматически импортированные директивы из модулей (#29203)
- 'изолированные' рендеры страниц (#29366)
- отложенная гидратация (#26468)
✅ Обновление
Как обычно, наша рекомендация по обновлению — запустить:
npx nuxi@latest upgrade --force
Это также обновит ваш lockfile и обеспечит получение обновлений от других зависимостей, от которых зависит Nuxt, особенно в экосистеме unjs.
Полная информация о релизе
Огромное спасибо всем, кто принимал участие в этом релизе — вы те, кто делает Nuxt возможным. ❤️
Не стесняйтесь сообщать нам о любых отзывах или проблемах! 🙏