跳转至

Next.js 与 Turbopack

Next.js 16+ 默认在本地开发中使用 Turbopack。Turbopack 是用 Rust 编写的增量打包器,可大幅加快开发启动时间和热更新。

使用时机

  • Turbopack(默认开发): 用于日常开发。尤其在大规模应用中,冷启动和 HMR 更快。
  • Webpack(遗留开发): 仅在遇到 Turbopack 的 bug,或依赖仅支持 webpack 的插件时使用。使用 --webpack(或根据 Next.js 版本使用 --no-turbopack)禁用。请查看发布文档。
  • 生产环境: 生产构建行为(next build)可能根据 Next.js 版本使用 Turbopack 或 webpack。请查看所用版本的官方 Next.js 文档。

适用场景:开发或调试 Next.js 16+ 应用、诊断开发启动或 HMR 延迟,或优化生产包时。

工作原理

  • Turbopack: Next.js 开发用增量打包器。由于使用文件系统缓存,重启会大幅加快(例如大型项目中可快 5 到 14 倍)。
  • 开发默认: 从 Next.js 16 开始,除非禁用,否则 next dev 会使用 Turbopack 运行。
  • 文件系统缓存: 重启会复用之前的工作成果。缓存通常位于 .next 下。基本使用无需额外配置。
  • 包分析器(Next.js 16.1+): 使用实验性包分析器检查输出并发现重量级依赖。通过配置或实验性标志启用(参见所用版本的 Next.js 文档)。

示例

命令

next dev
next build
next start

使用方法

本地开发时,使用 Turbopack 运行 next dev。使用包分析器(参见 Next.js 文档)优化代码分割,并减少大型依赖。尽可能将 App Router 和服务器组件作为最佳实践使用。

最佳实践

  • 为了获得稳定的 Turbopack 和缓存行为,请继续使用最新的 Next.js 16.x。
  • 如果开发缓慢,请确认正在使用 Turbopack(默认),并且缓存没有被不必要地清除。
  • 对于生产包大小问题,请使用所用版本的官方 Next.js 包分析工具。

本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 ev/ECC