Nuxt 3.7
🐣 全新 CLI
我们使用 unjs/citty
重构了 nuxi
,这标志着 Nuxt 首次发布依赖于新版本,并安全地位于其自身的仓库中。我们对此有宏伟的计划 - 请查看 nuxt/cli 中的一些功能 + 路线图讨论,并随时贡献您的力量!
Nuxi 现在已与主 nuxt
版本解耦 - 我们计划在未来更快地迭代和发布 nuxi,因此您可以期待即将到来的新事物!
🕸️ 原生 Web Streams 和 Response
随着 unjs/h3 和 unjs/nitro 的改进,现在可以直接从服务器路由返回 Response
对象,这意味着也可以在 Nuxt 中原生返回和处理流。
👉 查看 unjs/h3 和 unjs/nitro 版本说明中的完整详细信息。
🔥 HTML 渲染优化
此版本带来了一些在服务器端渲染 HTML 响应方面的改进。我们现在在构建时确定是否预加载/预取资源(因此您可以在 build:manifest
钩子中自定义此项)。我们现在还直接在 unhead
(#22179) 中管理它们的 HTML 渲染,这意味着您可以配置 <link>
、<meta>
、<script>
、<style>
等的顺序。而且 - 在我们的初步测试中 - 它甚至更快!
可以使用 experimental.headNext
标志选择加入即将到来的 head 改进。这目前包括基于 capo.js (#22431) 的新排序算法,并允许在 unhead
中发布未来优化时启用它们
export default defineNuxtConfig({
experimental: {
headNext: true
}
})
我们很想听取您的想法 - 您可以在此讨论中回复任何问题/反馈。
🛠️ 构建环境快捷方式
在您的 Nuxt 配置中,您现在可以使用 $client
和 $server
快捷方式轻松定义特定于 Vite 客户端/服务器 (#22302) 或 webpack 客户端/服务器 (#22304) 构建的配置。这以前只能通过 vite:extendConfig
和 webpack: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 上下文不可用”的问题,这可能适合您。我们现在在实验性标志下,在 Nuxt 和 Nitro 中都支持 Bun 和 Node 的原生异步上下文 (#20918)。
这使得可以在服务器上使用 Nuxt composables,而无需确保它们直接在 setup 函数中被调用。它还允许在 Nitro 中进行相同的操作,并提供一个新的 useEvent()
实用程序,该实用程序可在服务器路由中使用。
要试用它,您可以启用 experimental.asyncContext
export default defineNuxtConfig({
experimental: {
asyncContext: true
}
})
👓 监听器更新
我们修复了监听器的一些问题,这意味着您应该更少地需要重启服务器 - 并且如果您正在使用 layers,您应该会看到显着的性能提升。
⚗️ Nitro 2.6
Nitro 2.6 直接带来了更多令人兴奋的功能,包括更小、更轻的服务器以及 .data
目录中的新持久数据存储。
👉 在完整的发布文章中阅读更多内容。
✅ 升级
像往常一样,我们升级的建议是运行
npx nuxi upgrade --force
这也将刷新您的 lockfile,并确保您从 Nuxt 依赖的其他依赖项中拉取更新,尤其是在 unjs 生态系统中。
📃 完整更新日志
在 https://github.com/nuxt/nuxt/releases/tag/v3.7.0 上阅读完整的发布说明