Turborepo 2.1
Turborepo 2.1은 저장소와의 통합을 개선합니다. 주요 기능은 다음과 같습니다:
- 영향을 받은 패키지 그래프 감지:
--affected를 사용하여 변경된 작업만 실행 - 저장소 탐색 도구:
turbo ls및turbo run으로 패키지와 작업을 더 빠르게 찾기 - 터미널 UI 개선: 로그 선택, 작업 검색, 크기 조정 등
- 확장된 구성 옵션:
turbo.json을 사용한 기본값에 대한 더 많은 유연성
npx @turbo/codemod migrate를 실행하여 지금 업데이트하거나 npx create-turbo@latest로 시작하세요.
--affected로 변경된 패키지에 대한 작업 실행
Turborepo의 Remote Caching은 모든 머신에서 단일 캐시를 공유하므로 동일한 작업을 두 번 수행할 필요가 없습니다. 하지만 변경되지 않은 패키지를 완전히 무시할 수 있다면 어떨까요?
이제 turbo run과 함께 --affected 플래그를 사용하여 현재 브랜치의 최신 커밋과 저장소의 기본 브랜치(보통 main 또는 master) 사이의 변경 사항이 있는 패키지를 자동으로 대상으로 지정할 수 있습니다.
turbo는 Package Graph를 사용하여 직접 변경 사항이 있거나 내부 의존성에 변경 사항이 있는 패키지에 대해 작업을 실행합니다.
다음과 같은 상황에서 이 플래그를 사용하고 싶을 것입니다:
- monorepo의 패키지 전체에서 많은 작업을 실행하고 있으며, 코드 변경 사항이 있는 패키지에서만 해당 작업을 실행하고 싶을 때.
- Remote Cache를 사용하고 있지 않지만, CI에서 가능한 한 적은 작업만 수행하고 싶을 때.
- Remote Cache를 사용하고 있으며 대규모 저장소에 있을 때. 캐시에서 복원할 작업의 양을 최소화하면 네트워크를 통해 전송할 데이터가 줄어들어 캐시 복원이 더 빨라집니다.
- 이미 고급 필터링 기법 또는
turbo-ignore를 사용하여--affected와 동일하거나 유사한 동작을 만들고 있을 때. 이 새 플래그를 사용하여 스크립팅을 단순화할 기회가 있을 것입니다.
자세한 내용은 문서를 방문하세요.
저장소 탐색 도구
저장소가 성장하고 변경됨에 따라 찾고 있는 것을 빠르게 찾기 어려울 수 있습니다. 저장소를 더 빠르고 쉽게 이해할 수 있도록 작업, 패키지 및 관계를 신속하게 표시하고자 합니다.
turbo run
turbo run(작업 인수 없이)을 사용하여 저장소에서 사용 가능한 작업 목록을 가져옵니다. 이 명령은 필터 및 자동 패키지 스코핑과도 작동합니다.
자세한 내용은 문서를 방문하세요.
turbo ls
turbo ls를 사용하여 위치와 함께 저장소의 모든 패키지 목록을 가져오거나, 특정 패키지로 필터링하여 내부 의존성 및 작업 요약을 확인하세요.
turbo ls는 --filter 및 --affected도 지원하므로 변경된 패키지 목록을 쉽게 수집할 수 있습니다.
turbo ls는 특정 형식으로 결과를 반환하는 데 사용할 수 있는 실험적 --output 플래그를 지원합니다.
예를 들어, --output=json을 사용하여 다른 도구 또는 사용자 정의 스크립트에 대한 입력을
더 쉽게 만들 수 있습니다. 이전에 변경된 패키지 목록을 검색하기 위해서만
turbo build --dry=json을 사용했다면 turbo ls --affected --output=json을 시도해 보세요.
자세한 내용은 문서를 참조하고 출력 형식에 대한 피드백은 turbo ls
RFC에 남겨주세요.
자세한 내용은 문서를 방문하세요.
터미널 UI 개선
Turborepo 2.0에서 로그의 명확성을 개선하고 로컬 개발에서 상호작용 작업을 허용하기 위해 새로운 터미널 UI를 출시했습니다. 여러분의 피드백을 듣고 이 UI를 다듬는 것을 우선시하여 2.0 패치 및 이번 2.1 릴리스에서 개선 사항을 출시했습니다:
- 클립보드에 복사하기 위한 로그 강조 표시 (PR)
- 작업 목록을 통한 검색 (PR)
- 터미널 크기가 변경될 때 더 깔끔한 레이아웃 크기 조정 (PR)
- 작업 목록의 캐시 히트에 대한 새 아이콘 (PR)
- Watch Mode가 재시작을 트리거할 때 작업 상태 표시기 업데이트 (PR)
- 터미널 UI가 종료된 후 출력 로그 존중 (PR)
훌륭한 터미널 UI 경험을 구축하는 것은 독특한 도전 과제이며, 우리는 이 경험을 계속 반복하고 있습니다. monorepo를 위한 훌륭한 UI를 만드는 작업을 계속하는 동안 지속적인 피드백에 감사드립니다.
확장된 구성 옵션
이번 릴리스에서는 저장소의 기본값에 대해 더 많은 유연성을 제공하기 위해 turbo.json에 더 많은 키를 추가합니다. 이번 릴리스의 새로운 키는 다음과 같습니다:


많은 또는 모든 turbo 호출에서 이러한 구성에 대한 플래그 동등물을 사용하여 다음과 같은 명령으로 코드베이스를 어지럽혔을 수 있습니다:
이제 Turborepo의 기존 구성 모델을 사용하여 turbo.json의 중앙 집중식 구성으로 이를 단순화할 수 있습니다:
turbo.json은 저장소의 기본값을 설정합니다.- 시스템 환경 변수는 특정 환경에서 동작을 사용자 정의합니다.
- 플래그는
turbo의 특정 호출에 대한 동작을 사용자 정의합니다.
사용 가능한 옵션 및 구성에 대해 자세히 알아보려면 문서를 방문하세요.
기타 개선 사항
- 스트리밍 UI에서 작업 이름의 색상을 결정론적으로 만들기 위해 #9023에 기여하여 #2564를 닫은 Shaharking에게 특별히 감사드립니다. 이를 통해
turbo run호출 간 작업을 더 쉽게 비교할 수 있습니다.
전체 변경 로그는 vercel/turborepo에서 확인하세요.
커뮤니티
Turborepo 2.0 출시 이후 놀라운 채택과 커뮤니티 성장을 보았습니다:
- 25.9k+ GitHub Stars
- 2.9M+ 주간 NPM 다운로드
- Vercel의 Remote Caching을 통해 428년의 컴퓨팅 시간 절약
Turborepo는 핵심 팀을 포함한 모든 기여자들의 결합된 작업의 결과입니다.
Turborepo를 여러분의 빌드 도구로 만들어 주시는 지속적인 지원, 피드백 및 협력에 감사드립니다.