Release·  

Nuxt 3.7

Nuxt 3.7 已发布,带来了新的 CLI、原生 web streams 和 response、渲染优化、异步上下文支持等等功能。

🐣 一个新的 CLI

我们使用 unjs/citty 重构了 nuxi,这是第一个依赖于新版本的 Nuxt 发布的版本,安全地放在了自己的仓库中。我们对此有很大的计划-在 nuxt/cli 中可以查看一些功能和路线图讨论,并且请随时进行贡献!

Nuxi 现在与主要的 nuxt 版本解耦-我们计划将来更快地迭代和发布 nuxi,所以你可以期待即将推出的新功能!

🕸️ 原生 Web Streams 和 Response

通过改进 unjs/h3unjs/nitro,现在可以直接从服务器路由返回一个 Response 对象,这意味着你还可以在 Nuxt 中本地地返回和处理 streams。

👉 在 unjs/h3unjs/nitro 的发布说明中详细了解更多细节。

🔥 HTML 渲染优化

这个版本在从服务器渲染 HTML 响应方面有一些改进。我们现在在构建时决定是否预加载/预取资源(所以你可以在 build:manifest 钩子中自定义此设置)。我们现在还直接在 unhead 中管理它们的 HTML 渲染 (#22179),这意味着你可以配置 <link><meta><script><style> 等的 顺序。而且-在我们的初步测试中-速度甚至更快!

可以通过设置 experimental.headNext 标志来选择即将推出的 head 改进。目前这包括基于 capo.js 的新排序算法 (#22431),并允许在 unhead 中发布未来的优化:

export default defineNuxtConfig({
  experimental: {
    headNext: true
  }
})

非常期待你的想法-你可以在此讨论中回复任何问题/反馈。

🛠️ 构建环境快捷方式

在你的 Nuxt 配置中,你现在可以使用 $client$server 快捷方式来轻松定义专门用于 Vite client/server (#22302) 或 webpack client/server (#22304) 构建的配置。以前只能使用 vite:extendConfigwebpack:config 钩子来实现这一点。

例如:

export default defineNuxtConfig({
  vite: {
    $client: {
      build: {
        rollupOptions: {
          output: {
            chunkFileNames: '_nuxt/[hash].js',
            assetFileNames: '_nuxt/[hash][extname]',
            entryFileNames: '_nuxt/[hash].js'
          }
        }
      }
    }
  }
})

⚡️ Vite 4.4

我们选择取消对 Vite 的次要版本进行固定,这意味着每当 Vite 发布一个新的功能版本,你都可以立即选择使用。Vite 4.4 带来了许多令人兴奋的功能,包括实验性的 Lightning CSS 支持等等!

👉 在 Vite 发布说明 中了解更多详情。

💪 TypeScript 更新

我们现在在生成的 tsconfig.json 中仅使用纯粹的相对路径,而不是设置 baseUrl。这意味着更好地支持像 Docker 镜像这样的开发环境,其中绝对路径可能与你的 IDE 不匹配 (#22410)。

我们还设置了一些额外的编译器标志默认值,以与 Vite/TS 的建议相匹配 (#22468)。

此外,在 setPageLayout<NuxtLayout name> 中,你现在应该获得对布局的类型提示 (#22363)。

🦄 异步上下文支持

如果你遇到过 "Nuxt 上下文不可用" 的问题,这可能对你有用。我们现在在 Bun 和 Node 下支持本机异步上下文,不过是在实验性标志下,在 Nuxt 和 Nitro 中都支持 (#20918)。

这使得你可以在服务器上使用 Nuxt 组合式 API _而不需要确保它们在设置函数中直接调用。对于 Nitro,它还允许在服务器路由中使用新的 useEvent() 实用工具。

要尝试它,请启用 experimental.asyncContext

export default defineNuxtConfig({
  experimental: {
    asyncContext: true
  }
})

👓 Watcher 更新

我们修复了一些关于 watcher 的问题,意味着你应该需要更少地重新启动服务器-如果你使用的是图层,你应该会看到显著的性能提升。

⚗️ Nitro 2.6

来自 Nitro 2.6 的更多令人兴奋的功能正在到来,包括更小、更轻的服务器和一个 .data 目录中的新持久数据存储。

👉 在完整的发布文章中阅读更多详情。

✅ 升级

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

npx nuxi upgrade --force

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

📃 完整的更新日志

https://github.com/nuxt/nuxt/releases/tag/v3.7.0 上阅读完整的发布说明。