Next.js 和 Turbopack
Next.js 16+ 默认使用 Turbopack 进行本地开发:一个用 Rust 编写的增量打包器,能显著提升开发启动速度和热更新性能。
何时使用
- Turbopack(默认开发环境):用于日常开发。在大型应用中,能实现更快的冷启动和 HMR。
- Webpack(遗留开发环境):仅在遇到 Turbopack 的 bug 或开发中依赖 webpack 专用插件时使用。通过
--webpack(或--no-turbopack,具体取决于您的 Next.js 版本;请查阅对应版本的文档)禁用。 - 生产环境:
next build的生产构建行为可能根据 Next.js 版本使用 Turbopack 或 webpack;请查阅您对应版本的官方 Next.js 文档。
适用于:开发或调试 Next.js 16+ 应用、诊断开发启动缓慢或 HMR 问题、优化生产构建包。
工作原理
- Turbopack:Next.js 开发的增量打包器。使用文件系统缓存,重启速度显著提升(大型项目可达 5–14 倍)。
- 开发环境默认:从 Next.js 16 开始,
next dev默认使用 Turbopack,除非禁用。 - 文件系统缓存:重启时复用之前的工作;缓存通常位于
.next目录下;基本使用无需额外配置。 - Bundle Analyzer(Next.js 16.1+):实验性的 Bundle Analyzer,用于检查输出并发现大型依赖;通过配置或实验性标志启用(请查阅您对应版本的 Next.js 文档)。
示例
命令
next dev
next build
next start
使用
运行 next dev 进行本地开发,使用 Turbopack。使用 Bundle Analyzer(参见 Next.js 文档)优化代码拆分并精简大型依赖。尽可能优先使用 App Router 和服务端组件。
最佳实践
- 保持使用最新的 Next.js 16.x 版本,以获得稳定的 Turbopack 和缓存行为。
- 如果开发缓慢,请确保您正在使用 Turbopack(默认)且缓存未被不必要地清除。
- 对于生产构建包体积问题,请使用适用于您版本的官方 Next.js 构建包分析工具。