Turbopack
Turbopack (测试版) 是一个专为 JavaScript 和 TypeScript 优化的增量式打包工具,采用 Rust 编写,并内置于 Next.js 中。
使用方法
Turbopack 可在 Next.js 的 pages
和 app
目录中使用,以加速本地开发。要启用 Turbopack,请在运行 Next.js 开发服务器时使用 --turbo
标志。
支持的功能
Next.js 中的 Turbopack 对大多数用户来说无需配置,并可扩展以满足更高级的用例。要了解 Turbopack 当前支持的功能,请查看 API 参考文档。
不支持的功能
Turbopack 目前仅支持 next dev
,不支持 next build
。我们正在努力实现对构建的支持,以逐步迈向稳定版本。
当前不支持以下功能:
next.config.js
中的webpack()
配置- Turbopack 替代了 Webpack,这意味着不支持 Webpack 配置。
- 要配置 Turbopack,请参阅文档。
- Turbopack 支持部分 Webpack 加载器。
- Babel (
.babelrc
)- Turbopack 使用 SWC 编译器进行所有转译和优化。这意味着默认不包含 Babel。
- 如果您有
.babelrc
文件,可能不再需要它,因为 Next.js 包含了常见的 Babel 插件作为可启用的 SWC 转换。您可以在 编译器文档 中了解更多信息。 - 如果确认您的特定用例未被覆盖后仍需使用 Babel,可以利用 Turbopack 的 自定义 Webpack 加载器支持 来包含
babel-loader
。
- 在 App Router 中自动创建根布局。
- 目前不支持此行为,因为它会更改输入文件,相反,会显示错误提示您手动在所需位置添加根布局。
@next/font
(旧版字体支持)。@next/font
已弃用,推荐使用next/font
。next/font
在 Turbopack 中完全支持。
new Worker('file', import.meta.url)
。- 我们计划在未来实现此功能。
- Relay 转换
- 我们计划在未来实现此功能。
experimental.nextScriptWorkers
- 我们计划在未来实现此功能。
- AMP。
- 目前不计划在 Next.js 中通过 Turbopack 支持 AMP。
- Yarn PnP
- 目前不计划在 Next.js 中通过 Turbopack 支持 Yarn PnP。
experimental.urlImports
- 目前不计划在 Next.js 中通过 Turbopack 支持
experimental.urlImports
。
- 目前不计划在 Next.js 中通过 Turbopack 支持
生成追踪文件
追踪文件允许 Next.js 团队调查并改进性能指标和内存使用情况。要生成追踪文件,请在 next dev --turbo
命令后追加 NEXT_TURBOPACK_TRACING=1
,这将生成 .next/trace.log
文件。
在报告与 Turbopack 性能和内存使用相关的问题时,请在 GitHub 问题中包含追踪文件。