发布·  

Nuxt 3.14

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

Daniel Roe

@danielroe.dev

在幕后,我们为发布 Nuxt v4 做了大量准备工作(特别是在 unjs 方面,为 Nitro v3 做了准备!)

⚡️ 由 jiti 提供支持的更快启动

现在,加载 nuxt 配置文件以及模块和其他构建时代码都由 jiti v2 提供支持。你可以在此查看更多关于该版本的信息jiti v2 发行说明,但其中最重要的一点是(在可能的情况下)原生节点 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> 的形式在你的 devtools 中显示。从 v4 开始,我们确保它是 <AppHeader>,但这是可选的,以避免破坏你可能实现的任何手动 <KeepAlive>。(#28745).
  2. 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 v3.14.0 的完整发行说明。

非常感谢参与本次发布的所有人。我们将在接下来的发布中带来令人兴奋的内容!❤️

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