플랫폼 처리

Node.js 버전

Node.js 버전을 고려하려면 package.json의 engines 키를 사용하세요. Turborepo는 이 필드의 변경 사항을 고려하여 그에 따라 캐시 미스를 처리합니다.

운영 체제, 아키텍처 및 기타 임의 조건

고급 사용 사례의 경우 운영 체제(OS), 아키텍처 또는 기타 외부 요인이 해시에 기여하도록 할 수 있습니다.

1. 디스크에 임의 파일 작성

먼저 관심 있는 해시 기여 요소를 고려하는 스크립트를 만듭니다. 예를 들어, 다음은 플랫폼과 아키텍처를 식별하고 해당 세부 정보를 파일(turbo-cache-key.json)에 작성하는 Node.js 스크립트입니다:

./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 배열에 파일을 포함합니다:
Turborepo logo
./turbo.json
{
  "tasks": {
    "build-for-platforms": {
      "dependsOn": ["^build"],
      "inputs": ["$TURBO_DEFAULT$", "turbo-cache-key.json"]
    }
  }
}
Turborepo logo
./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"
  }
}

이제 turbo run buildbuild 작업의 해시를 계산할 때 turbo-cache-key.json의 내용을 고려합니다.