在幕后,为了 Nuxt v4 的发布,我们做了很多准备工作(特别是在 unjs
方面,为 Nitro v3 做了准备!)。
jiti
提供支持的更快启动 ⚡️ 由
现在,Nuxt 配置文件以及模块和其他构建时代码的加载都由 jiti
v2 提供支持。您可以在jiti v2 发布说明中查看更多关于此版本的信息,但其中最重要的部分是(在可能的情况下)原生 node esm 导入,这意味着更快的启动。✨
📂 用于与客户端/服务器共享代码和类型的共享文件夹
您不应该在 Nitro 代码中导入 Vue 应用程序代码(反之亦然)。但这在共享不依赖于 Nitro/Vue 上下文的类型或实用程序时造成了摩擦。
为此,我们有了一个新的 shared/
文件夹(#28682)。您不能将 Vue 或 Nitro 代码导入到此文件夹中的文件,但它会生成自动导入(如果您使用 compatibilityVersion: 4
),您可以在应用程序的其余部分中使用。
如果需要,您可以使用指向此文件夹的新 #shared
别名。
共享文件夹与您的 server/
文件夹并排。(如果您使用 compatibilityVersion: 4
,这意味着它不在您的 app/
文件夹中。)
rspack
构建器 🦀
我们很高兴宣布为 rspack
提供新的第一类 Nuxt 构建器。它仍然是实验性的,但我们已经重构了内部 Nuxt 虚拟文件系统以使用 unplugin
,从而使其成为可能。
请告诉我们您是否喜欢它——并且随时提出您遇到的任何问题。
👉 要尝试它,您可以使用这个 starter——或者只安装 @nuxt/rspack-builder
并在您的 nuxt 配置文件中设置 builder: 'rspack'
。
✨ 新的组合式函数
我们有新的 useResponseHeader
和 useRuntimeHook
组合式函数(#27131等等#29741).
🔧 新的模块工具
我们现在有了一个新的 addServerTemplate
工具(#29320)用于添加可在 Nitro 运行时路由中访问的虚拟文件。
🚧 v4 变更
我们已经合并了一些只有在 compatibilityVersion: 4
下才生效的变更,但您可以提前选择启用。
- 以前,如果您有一个像
~/components/App/Header.vue
这样的组件,它将以<Header>
的形式在您的开发者工具中可见。从 v4 开始,我们确保它是<AppHeader>
,但这是可选的,以避免破坏您可能实现的任何手动<KeepAlive>
。(#28745). - Nuxt 会在调用
pages:extend
之前从您的文件中扫描页面元数据。但这导致了一些令人困惑的行为,因为在此刻添加的页面最终不会受到其页面元数据的尊重。所以我们现在在调用pages:extend
之前不再扫描元数据。相反,我们有一个新的pages:resolved
钩子,它在pages:extend
之后调用,在所有页面都用其元数据增强之后。我建议通过设置experimental.scanPageMeta
为after-resolve
来选择启用此功能,因为它解决了一些错误。
🗺️ v3.15 路线图
它们没有及时赶上 v3.14,但对于下一个次要版本,您可以期待(除其他外):
✅ 升级
像往常一样,我们建议您运行以下命令进行升级
npx nuxi@latest upgrade --force
这也将刷新你的 lockfile,并确保你拉取 Nuxt 依赖的其他依赖项(尤其是在 unjs 生态系统中)的更新。
完整发布说明
非常感谢所有参与此版本的人。我们的下一次发布将带来激动人心的内容!❤️
如果你有任何反馈或问题,请随时告诉我们!🙏