远程缓存
Turborepo 的任务缓存通过永不重复执行相同的工作来节省时间。
但是有一个问题:缓存是本地存储在您的机器上的。当您使用持续集成系统时,这可能导致大量重复工作:

由于 Turborepo 默认只缓存到本地文件系统,即使所有任务输入都相同,相同的任务(turbo run build)也必须在每台机器上重新执行(由您、您的队友、您的 CI、您的 PaaS 等)——这浪费了时间和资源。
单一共享缓存
如果您可以在整个团队(甚至您的 CI)中共享单个 Turborepo 缓存会怎样?

Turborepo 可以安全地与远程缓存通信——这是一个存储任务结果的云服务器。通过防止整个组织中的重复工作,这可以节省大量时间。
远程缓存是免费的,可以与托管提供商一起使用,也可以作为自托管缓存使用。
Vercel
Vercel 远程缓存在所有计划中都可以免费使用,即使您没有在 Vercel 上托管应用程序也是如此。按照以下步骤为您的仓库启用远程缓存。
本地开发
要将本地 Turborepo 链接到远程缓存,请使用您的 Vercel 账户验证 Turborepo CLI:
turbo login
如果您没有安装全局 turbo,也可以使用包管理器:
pnpm dlx turbo login
yarn dlx turbo login
npx turbo login
bunx turbo login
npx turbo login --sso-team=team-name 以获取具有正确权限的缓存令牌。现在,将您的 Turborepo 链接到远程缓存:
turbo link
启用后,对当前正在缓存的包进行一些更改,并使用 turbo run 对其运行任务。您的缓存构件现在将存储在本地_和_远程缓存中。
要验证,请删除本地 Turborepo 缓存:
rm -rf ./.turbo/cache
rd /s /q "./.turbo/cache"
然后,再次运行相同的构建。如果一切正常工作,turbo 不应该在本地执行任务。相反,它将从远程缓存下载日志和构件,并将它们重放给您。
Vercel 上的远程缓存
如果您在 Vercel 上构建和托管应用程序,一旦您使用 turbo,远程缓存将自动为您设置。有关更多信息,请参阅 Vercel 文档。
构件完整性和真实性验证
Turborepo 可以在将构件上传到远程缓存之前使用密钥对其进行签名。Turborepo 使用您提供的密钥对构件使用 HMAC-SHA256 签名。当从远程缓存下载构件时,Turborepo 将验证其完整性和真实性。任何验证失败的构件将被忽略,并被 Turborepo 视为缓存未命中。
要启用此功能,请将 turbo.json 配置中的 remoteCache 选项设置为包含 signature: true。然后通过声明 TURBO_REMOTE_CACHE_SIGNATURE_KEY 环境变量来指定您的密钥。
{
"remoteCache": {
"signature": true }
}
远程缓存 API
远程缓存可以由任何符合 Turborepo 远程缓存 API 规范的 HTTP 服务器实现。
使用 Vercel 的托管远程缓存
Vercel,Turborepo 的创建者和维护者,提供了一个与 Turborepo 完全兼容的托管远程缓存。
使用 Vercel 远程缓存是零配置的,并通过开源的 Vercel 远程缓存 SDK 自动与 Vercel 部署集成。
了解更多关于 Vercel 上的 Turborepo 或免费部署模板来试用它。
自托管
您也可以自托管自己的远程缓存,并使用 --manual 标志登录以提供 API URL、团队和令牌信息。
turbo login --manual
OpenAPI 规范
目前,所有版本的 turbo 都与 v8 端点兼容。
社区实现
Turborepo 社区已经创建了远程缓存的开源实现。