发布·  

Nuxt 3.14

Nuxt 3.14 发布了——带来了新的 rspack 构建器、共享文件夹和性能提升!
Daniel Roe

Daniel Roe

@danielroe.dev

在幕后,为了 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'

✨ 新的组合式函数

我们有新的 useResponseHeaderuseRuntimeHook 组合式函数(#27131等等#29741).

🔧 新的模块工具

我们现在有了一个新的 addServerTemplate 工具(#29320)用于添加可在 Nitro 运行时路由中访问的虚拟文件。

🚧 v4 变更

我们已经合并了一些只有在 compatibilityVersion: 4 下才生效的变更,但您可以提前选择启用

  1. 以前,如果您有一个像 ~/components/App/Header.vue 这样的组件,它将以 <Header> 的形式在您的开发者工具中可见。从 v4 开始,我们确保它是 <AppHeader>,但这是可选的,以避免破坏您可能实现的任何手动 <KeepAlive>。(#28745).
  2. Nuxt 会在调用 pages:extend 之前从您的文件中扫描页面元数据。但这导致了一些令人困惑的行为,因为在此刻添加的页面最终不会受到其页面元数据的尊重。所以我们现在在调用 pages:extend 之前不再扫描元数据。相反,我们有一个新的 pages:resolved 钩子,它在 pages:extend 之后调用,在所有页面都用其元数据增强之后。我建议通过设置 experimental.scanPageMetaafter-resolve 来选择启用此功能,因为它解决了一些错误。

🗺️ v3.15 路线图

它们没有及时赶上 v3.14,但对于下一个次要版本,您可以期待(除其他外):

  • 模块的自动导入指令(#29203)
  • “隔离”页面渲染(#29366)
  • 延迟水合(#26468)

✅ 升级

像往常一样,我们建议您运行以下命令进行升级

npx nuxi@latest upgrade --force

这也将刷新你的 lockfile,并确保你拉取 Nuxt 依赖的其他依赖项(尤其是在 unjs 生态系统中)的更新。

完整发布说明

阅读 Nuxt v3.14.0 的完整发布说明。

非常感谢所有参与此版本的人。我们的下一次发布将带来激动人心的内容!❤️

如果你有任何反馈或问题,请随时告诉我们!🙏