Turborepo logo

处理平台

Node.js 版本

要考虑 Node.js 版本,请使用 package.json 中的 engines 键。Turborepo 将会考虑此字段的更改并相应地错过缓存。

操作系统、架构和其他任意条件

对于高级用例,您可能希望操作系统 (OS)、架构或其他外部因素影响您的哈希值。

1. 写入任意文件到磁盘

首先,创建一个脚本来考虑您感兴趣的哈希贡献因素。例如,这是一个 Node.js 脚本,用于识别平台和架构,并将这些详细信息写入文件 (turbo-cache-key.json)

./scripts/create-turbo-cache-key.js
#!/usr/bin/env node
 
const { writeFileSync } = require('fs');
const { join } = require('path');
 
const { platform, arch } = process;
const file = 'turbo-cache-key.json';
const str = JSON.stringify({ platform, arch });
console.log(`Generating cache key: ${str}`);
writeFileSync(file, str);

2. 将文件添加到你的 .gitignore

您不会希望将此文件提交到源代码控制,因为它依赖于环境。将其添加到你的 .gitignore

.gitignore
+ turbo-cache-key.json

3. 将文件添加到哈希

现在,通过将其添加到任务输入中,确保 turbo 知道该文件。您可以通过两种方式做到这一点

  • 对于特定任务:在任务的 inputs 数组 中包含该文件
./turbo.json
{
  "tasks": {
    "build-for-platforms": {
      "dependsOn": ["^build"],
      "inputs": ["$TURBO_DEFAULT$", "turbo-cache-key.json"]
    }
  }
}
./turbo.json
{
  "globalDependencies": ["turbo-cache-key.json"],
  "tasks": {
    ...
  }
}

4. 在运行 turbo 之前生成文件

最后,您需要确保在运行 turbo 之前运行该脚本。例如

./package.json
{
  "scripts": {
    "build-for-platforms": "node ./scripts/create-turbo-cache-key.js && turbo run build"
  }
}

现在,当计算 build 任务的哈希值时,turbo run build 将会考虑 turbo-cache-key.json 的内容。

小时

总共节省的计算时间
开始使用
远程缓存 →

本页内容