用途
本技能面向 Next.js 16+ 与 Turbopack 的开发实践,帮助开发者理解并使用 Turbopack 这一默认开发打包器,并在遇到问题时做出合理的打包器取舍。
主要能力
- Turbopack:Next.js 开发环境使用的增量打包器,使用文件系统缓存,使重启速度大幅提升(资料举例:大型项目约 5–14 倍)。
- 开发默认启用:从 Next.js 16 起,
next dev默认使用 Turbopack,除非被显式禁用。 - 文件系统缓存:重启时复用之前的工作成果,缓存通常位于
.next目录下,基础使用无需额外配置。 - Bundle Analyzer(Next.js 16.1+):实验性的打包分析器,用于检查输出、发现体积较大的依赖;可通过配置或实验性标志启用(具体以对应版本的 Next.js 文档为准)。
使用方式
常用命令:
next dev
next build
next start
本地开发时运行 next dev,即使用 Turbopack。可使用 Bundle Analyzer(参见 Next.js 文档)优化代码分割、裁剪体积过大的依赖。在可行的情况下优先使用 App Router 与服务器组件。
何时使用 Turbopack / webpack
- Turbopack(默认开发):用于日常开发。冷启动与 HMR 更快,在大型应用中尤为明显。
- webpack(旧版开发):仅当遇到 Turbopack 的 bug,或在开发中依赖仅支持 webpack 的插件时使用。可通过
--webpack禁用(部分 Next.js 版本为--no-turbopack,请查阅你所使用版本的文档)。 - 生产环境:生产构建(
next build)使用 Turbopack 还是 webpack 取决于 Next.js 版本,请查阅对应版本的官方文档。
中间件文件命名
Next.js 16 引入了 proxy.ts 作为中间件文件名,取代旧的 middleware.ts 约定:
- Next.js 16+:在项目根目录使用
proxy.ts - Next.js 16 之前:在项目根目录使用
middleware.ts
该文件名变更与 Next.js 版本相关,与使用哪种打包器(Turbopack 或 webpack)无关。请始终查阅你所审查版本的官方文档。
在 Next.js 16 项目中,不要将 proxy.ts 标记为命名错误或缺失的中间件文件。该文件是正确的、有意为之的。建议将其重命名为 middleware.ts 会破坏中间件的执行。
适用场景
- 开发或调试 Next.js 16+ 应用
- 诊断开发启动缓慢或 HMR 缓慢的问题
- 优化生产打包体积
最佳实践
- 保持使用较新的 Next.js 16.x,以获得稳定的 Turbopack 与缓存行为。
- 如果开发变慢,确认正在使用 Turbopack(默认),并确认缓存没有被不必要地清除。
- 若遇到生产打包体积问题,使用对应版本的官方 Next.js 打包分析工具。
限制
资料未提供具体的价格、收费、平台支持范围或性能基准的完整数据;生产构建的具体打包器行为、Bundle Analyzer 的启用方式与禁用 Turbopack 的确切参数均需以对应版本的 Next.js 官方文档为准。