仓库
文档
常见问题

常见问题

我应该全局安装 Turborepo 吗?

使用 Turborepo 时,你有两个选择

  1. 通过 npm install --global turbo 全局安装
  2. 在你的项目中安装本地版本

我们建议全局安装 turbo CLI。这将为你提供顺畅、符合人体工程学的使用体验,以便运行任务。如果你的项目在 package.json 中也有 turbo 作为依赖项,则全局 turbo 将调用本地 turbo,以确保在项目中使用预期的版本。

为什么我的全局 turbo 无法按预期工作?

如果你使用不同的包管理器进行安装,则有可能在你的机器上出现多个版本的全局 turbo。如果你意外执行了旧版本的 turbo,则可能会导致意外的行为。

你可以使用以下命令快速检查你正在使用的包管理器的版本

  • macOS 和 Linux:which turbo
  • Windows:where turbo

确保稳定的最简单方法是为非首选的包管理器运行卸载命令

npm uninstall turbo --global

我必须使用远程缓存才能使用 Turborepo 吗?

否。远程缓存 是可选的。但是,你会发现它非常有助于加快团队开发速度、加快 Docker 内部的构建速度,还可以节省你自己的机器上的空间。

Turborepo / 远程缓存会存储我的源代码吗?

否。Turborepo 不存储源代码。如果没有 远程缓存,则代码永远不会离开你的机器——它只会将工件缓存到本地磁盘。

使用 Turborepo 的远程缓存时,你负责配置缓存行为,并且应该只设置 Turborepo 来缓存编译的工件。请注意,Turborepo 将所有日志视为工件,因此这些日志与其他缓存工件一起存储。

我必须使用 Vercel 才能使用 Turborepo 吗?

否。Turborepo 是一个开源项目,不绑定到任何特定的托管提供商或远程缓存提供商。默认的远程缓存提供商是 Vercel,如果你选择启用它。但是,如果你喜欢,可以使用任何其他支持相同 API 的提供商。几个开源社区远程缓存与 Turborepo 兼容。

除了 Vercel 之外,我可以用 Turborepo 使用其他远程缓存提供商吗?

是的。只要您选择的远程缓存提供商支持相同的 API,您就可以在 Turborepo 中使用它。

Turborepo 会收集任何个人身份信息吗?

由于 Turborepo 功能的性质,在本地运行开源二进制文件时不会收集任何个人信息。默认情况下,所有缓存的工件都存储在您的机器上。此外,turbo CLI 不会收集任何登录信息或联系方式,因此 Turborepo 永远无法访问任何个人身份信息。因此,对于任何数据隐私问题和疑虑,请参阅Turborepo 的隐私政策

使用远程缓存时,Turborepo 会收集任何个人身份信息吗?

远程缓存启用时,默认情况下,Turborepo 将使用您的 Vercel 帐户在云中缓存工件。因此,对于任何数据隐私问题和疑虑,请参阅Turborepo 的隐私政策Vercel 的隐私政策(在新标签页中打开)。如果您使用其他远程缓存提供商,请参阅该提供商的隐私政策。

在使用多个 Next.js 应用程序时,如何在 Turborepo 中保留快速刷新?

快速刷新(在新标签页中打开)使您可以即时了解对 Next.js 应用程序中 React 组件所做的编辑。

如果你的 Turborepo 拥有多个 Next.js 应用程序,可以使用 transpilePackagesnext.config.js 中,以确保工作区之间的导入在进行更改时可以使用快速刷新。Turborepo 将有效地监视任何编辑,并在保存时重新构建。你可以从 此示例(在新标签页中打开) 开始,该示例已设置为处理快速刷新。

如果你使用的是低于 13 的 Next.js 版本,则需要使用 next-transpile-modules(在新标签页中打开) 以获得相同的快速刷新行为。

“实验性”是什么意思?

Turborepo 中的一些新功能被标记为“实验性”。这意味着该功能尚未准备好用于生产,并且将来可能会发生变化。我们鼓励你试用这些功能并提供反馈,但请注意,它们将来可能会发生变化。

我可以用包含非 JS 代码的单一仓库使用 Turborepo 吗?

你的单一仓库可以包含具有任何类型代码的子目录(Django 应用程序、Rust 箱子、Ruby CLI 等)。Turborepo 将在很大程度上忽略这些目录。但是,如果你希望 Turborepo 对你的代码库的那些部分执行任何操作,则需要

  • 在工作区声明中包含这些子目录(例如 pnpm-workspace.yamlworkspaces 键在 package.json 中)。
  • 向此目录添加 package.json 文件,填充 namescripts 字段。

Turborepo 使用 Node.js 约定来查找工作区和执行任务,但它并不关心这些任务是什么。