업그레이드

2.0으로 업그레이드

turbo.json 업데이트

다음을 실행하여 1.x에서 2.0으로 업그레이드를 시작합니다:

Terminal
pnpm dlx @turbo/codemod migrate

이는 1.x에서 2.0으로의 많은 주요 변경 사항에 대해 turbo.json을 업데이트합니다.

또한 name 필드가 없는 Workspace의 모든 package.jsonname 필드가 추가됩니다.

Good to know: 

각 codemod를 개별적으로 수동으로 실행할 수도 있습니다. 자세한 내용은 codemods 페이지를 방문하세요.

루트 package.jsonpackageManager 필드 추가

packageManager 필드는 Workspace에서 사용해야 하는 패키지 관리자를 정의하는 Node.js 생태계의 규칙입니다.

Turborepo 2.0은 코드베이스의 안정성과 동작 예측 가능성을 향상시키는 방법으로 Workspace가 이 필드를 정의하도록 요구합니다. 아직 없는 경우 루트 package.json에 이 필드를 추가합니다:

./package.json
{
+ "packageManager": "pnpm@9.2.0"
}

eslint-config-turbo 업데이트

eslint-config-turbo는 캐싱을 위해 env 키에 추가해야 하는 환경 변수를 식별하는 데 도움이 됩니다. 사용 중인 경우 메이저 버전과 일치하도록 업데이트해야 합니다.

turbo run 명령 업데이트

Turborepo 2.0에는 turbo run 명령의 동작 및 정확성 개선이 포함되어 있습니다. 아래는 변경 사항의 요약이며, 코드베이스에 영향을 미칠 수도 있고 그렇지 않을 수도 있습니다:

  • 환경 변수에 대한 Strict Mode가 이제 기본값이 되어 Loose Mode에서 이동함 (PR)
    • 작업의 스크립트에 환경 변수가 누락된 것으로 보이면 명령별로 --env-mode 옵션을 사용하여 이 동작에서 다시 옵트아웃하여 점진적으로 마이그레이션할 수 있습니다. 가능한 한 빨리 --env-mode 옵션을 삭제할 수 있도록 작업의 모든 환경 변수를 고려하도록 the env를 업데이트하는 것이 좋습니다.
    • 저장소의 기본값을 Loose Mode로 다시 설정하려면 envMode 구성을 사용하여 설정할 수 있습니다.
  • Workspace 루트 디렉토리는 이제 모든 패키지의 암시적 종속성임 (PR)
    • 루트의 변경 사항이 저장소의 모든 작업에 영향을 줄 수 있으므로 저장소는 루트에 가능한 한 적은 코드를 가져야 합니다. 또한 Workspace 루트에서 Internal Package를 사용하는 경우 해당 종속성에 대한 변경 사항도 모든 작업에 대한 캐시 미스를 유발합니다. 두 경우 모두 루트에서 코드를 이동하고 패키지로 이동하는 것을 고려하세요.
  • --filter 및 아래 그래프 정확성 변경을 위해 --ignore 제거됨 (PR)
  • --scope 플래그 제거됨 (1.2부터 더 이상 사용되지 않음) (PR)
  • 루트 package.jsonengines 필드가 이제 해싱에 사용됨 (PR)
  • --filter가 더 이상 패키지 이름에 대한 네임스페이스를 추론하지 않음 (PR)
  • --filter는 이제 패키지 이름이나 디렉토리가 일치하지 않을 때 오류를 발생함 (PR)
  • --only는 패키지 종속성 대신 작업 종속성을 제한함 (PR)