Turborepo 2.2

Friday, October 18th, 2024
Tom Knickman
Name
Tom Knickman
X
@tknickman
Anthony Shew
Name
Anthony Shew
X
@anthonysheww
Chris Olszewski
Name
Chris Olszewski
Nicholas Yang
Name
Nicholas Yang
X
@nicholaslyang
Dimitri Mitropoulos
Name
Dimitri Mitropoulos

Turborepo 2.2는 새로운 저장소 쿼리 명령과 함께 다른 개선 사항을 제공합니다:

npx @turbo/codemod migrate를 실행하여 지금 업데이트하거나 npx create-turbo@latest로 시작하세요.

저장소 쿼리 Experimental

Turborepo 2.2에서 Turborepo의 저장소 데이터에 대해 GraphQL 쿼리를 실행할 수 있는 새로운 명령인 turbo query를 소개합니다. Turborepo는 최대 효율성으로 작업을 실행하기 위해 저장소에 대한 많은 데이터를 계산합니다. 여기에는 패키지 의존성 그래프, 변경된 패키지, 작업 의존성, 작업의 로그 출력 등이 포함됩니다. 이 데이터는 스크립팅, 리팩토링, CI에서 실행할 항목 결정 및 코드베이스에 대한 다른 인사이트 발견에 유용할 수 있습니다.

시작하려면 turbo query를 실행하여 GraphiQL을 엽니다. 이는 대화형 스키마 탐색, 문서화 및 쿼리 전송을 지원하는 GraphQL 쿼리 작성용 로컬 IDE입니다.

쿼리를 문자열 또는 파일 경로로 직접 전달할 수도 있습니다:

Terminal
turbo query "query { package(name: \"web\") { name } }"
turbo query query.gql

예제

test 작업이 있는 모든 영향을 받은 패키지의 이름과 경로를 가져옵니다.

affected-packages.gql
{
  affectedPackages(
    base: "main"
    head: "HEAD"
    filter: { has: { field: TASK_NAME, value: "test" } }
  ) {
    items {
      name
      path
    }
  }
}

특정 패키지와 그 직접 의존성을 가져옵니다.

direct-dependencies.gql
query {
  package(name: "cli") {
    directDependencies {
      name
    }
  }
}

직접 종속자가 10개를 초과하는 모든 패키지를 찾습니다.

filter.gql
query {
  packages(
    filter: { greaterThan: { field: DIRECT_DEPENDENT_COUNT, value: 10 } }
  ) {
    name
  }
}

Turborepo는 과거에 실행 요약, 드라이 런ls와 같은 구조화된 데이터용 API를 추가했습니다. 그러나 이러한 API에는 몇 가지 제한 사항이 있습니다. 첫째, 일반 저장소 정보가 아닌 단일 실행을 중심으로 합니다. 둘째, 더 많은 필드를 추가함에 따라 출력이 매우 커졌습니다. 실행에 구애받지 않는 방식으로 저장소 데이터를 쿼리하고 반환되는 데이터를 더 사용자 정의할 수 있는 방법이 필요했습니다.

이 새로운 실험적 기능에 대한 초기 피드백을 제공해 준 @maschwenk, @rafaeltab@weyert에게 감사드립니다.

자세한 내용은 문서를 방문하세요. 이 새로운 실험적 명령에 대한 피드백은 turbo query RFC에 남겨주세요.

개선된 캐시 안전성

작업 캐싱은 Turborepo의 가장 강력한 기능 중 하나로, 변경된 것만 다시 실행하여 빌드 및 기타 작업 속도를 높입니다. Turborepo 2.2에서는 캐시 입력 및 출력을 구성하고 올바르지 않아 보일 때 경고하는 몇 가지 개선 사항을 출시합니다.

플랫폼 환경 변수

애플리케이션을 배포할 때 프로덕션 환경에 이미 환경 변수가 구성되어 있을 것입니다. 이제 지원되는 플랫폼의 경우 Turborepo가 이러한 환경 변수를 turbo.json 구성과 자동으로 확인하여 올바르게 고려했는지 확인하고, 누락된 환경 변수에 대해 경고합니다.

모든 플랫폼은 빌드 환경에 TURBO_PLATFORM_ENV 환경 변수를 구현하여 이 기능을 지원할 수 있습니다.

Vercel이 오늘 지원되며, 더 많은 플랫폼을 사용할 수 있게 되면 문서를 업데이트할 예정입니다.

플랫폼 환경 변수에 대해 자세히 알아보세요.

빈 캐시 구성에 대한 경고

작업을 실행할 때 Turborepo는 이제 작업이 빈 디렉토리를 캐시하도록 구성된 경우 경고합니다. 이는 일반적인 실수일 수 있으며 우발적인 빌드 중단으로 이어질 수 있습니다. 이는 2.2에서 기본적으로 활성화됩니다.

출력 구성에 대해 자세히 알아보세요.

eslint-config-turbo 개선

Turborepo는 일반 프레임워크에 대해 환경 키에 접두사 와일드카드를 자동으로 추가합니다. 지원되는 프레임워크 중 하나를 사용하는 경우 프레임워크의 접두사로 시작하는 환경 변수를 지정할 필요가 없습니다.

이제 Turborepo 2.2에서 eslint-config-turbo도 이 기능을 지원하여 플러그인의 경고가 정확하고 실행 가능하도록 합니다.

eslint-config-turbo에 대해 자세히 알아보세요.

--affected를 사용한 무구성 비교

Turborepo 2.1에서 turbo runturbo ls와 함께 사용하여 변경된 패키지를 자동으로 타겟팅할 수 있는 --affected 플래그를 출시했습니다. 2.2에서는 GitHub 워크플로우에서 --affected를 실행할 때 자동 비교를 도입하여 일반적인 사용 사례를 더욱 스마트하게 만들어 한 단계 더 나아갑니다.

--affected에 대해 자세히 알아보세요.

커뮤니티

Turborepo 2.1 출시 이후 놀라운 채택과 커뮤니티 성장을 보았습니다:

Turborepo는 핵심 팀을 포함한 모든 기여자들의 결합된 작업의 결과입니다.

전체 변경 로그를 확인하세요.

Turborepo를 여러분의 빌드 도구로 만들어 주시는 지속적인 지원, 피드백 및 협력에 감사드립니다.