Turborepo 2.4
Turborepo 2.4는 저장소를 향상시키는 여러 개선 사항을 포함합니다:
- Boundaries Experimental: Turborepo의 Boundaries 첫 번째 살펴보기
- 터미널 UI 개선: 지속적인 기본 설정 및 새로운 기능
- Watch Mode 캐싱 Experimental: Watch Mode에서 더 빠르게 개발
- 순환 의존성 권장 사항: 대규모 저장소에서 Turborepo를 더 쉽게 채택
node_modules의schema.json: 저장소 내에서 버전화된 구성 유효성 검사- ESLint Flat Config 지원: ESLint v9용으로 업데이트된
eslint-config-turbo및eslint-plugin-turbo
npx @turbo/codemod migrate를 실행하여 지금 업그레이드하거나 npx create-turbo@latest로 시작하세요.
Boundaries Experimental
Turborepo는 패키지 관리자 Workspaces 위에 구축되어 저장소의 작업 캐싱을 결정하는 일부로 생태계 규칙에 의존합니다. 그러나 이를 위해서는 저장소의 모든 개발자가 이러한 규칙을 알고 준수해야 합니다.
Boundaries는 이러한 모범 사례가 따라지지 않는 저장소의 위치를 포착하는 실험적 기능입니다. 이를 통해 캐싱이 더 안전해지고 저장소가 향후 Turborepo 기능을 안전하게 사용할 준비가 되도록 보장합니다.
다음을 사용하여 오늘 시도해 보세요:
Boundaries의 이 초기 반복에는 두 가지 유형의 monorepo 실수를 찾는 것이 포함됩니다:
- 패키지 디렉토리 외부의 파일 가져오기
- 의존성에 지정되지 않은 패키지 가져오기
Boundaries RFC
이러한 내장 진단뿐만 아니라 사용자 정의 Boundaries에 대한 제안이 포함된 Boundaries RFC에 대한 여러분의 피드백을 기대합니다.
자세한 내용은 문서를 방문하세요.
터미널 UI 개선
Turborepo 2.0에서 처음 출시된 터미널 UI를 계속 반복 개선했습니다.
지속적인 기본 설정
이전 버전의 Turborepo에서는 turbo를 실행할 때마다 터미널 UI를 원하는 상태로 재설정해야 했습니다. Turborepo 2.4에서는 다음을 포함하여 여러분이 만든 UI 선택 중 일부를 유지합니다:
- 이전에 선택한 작업이 다음에
turbo를 실행할 때 미리 선택됩니다. 위아래 화살표 키를 쉬게 해주세요. - 아래에 설명된 대로 작업 목록 표시 여부
- 아래에 설명된 대로 작업 선택 고정
이러한 기본 설정을 유지하면 turbo 호출 전반에 걸쳐 더 원활한 경험을 제공하여 이전 turbo 실행의 상태로 UI를 복원합니다.
새로운 키 바인딩
작업 및 로그 작업을 더 쉽게 할 수 있도록 터미널 UI에 더 많은 기능을 추가했습니다.
- h로 작업 목록 토글: 작업 중 하나에 집중하는 경우가 많으므로 항상 작업 목록을 볼 필요가 없습니다. h 키를 눌러 작업 목록을 표시하고 숨깁니다. 이 기능은 위에 설명된 대로 지속적인 기본 설정입니다.
- c로 로그 복사: 마우스로 로그 세트를 강조 표시한 후 c를 눌러 시스템 클립보드에 로그를 복사합니다.
- j 및 k로 작업 선택: 이제 ↑ 및 ↓ 외에도 j 및 k를 사용하여 작업 목록을 순환할 수 있습니다. Vim 사용자 여러분, 기뻐하세요.
- p로 선택한 작업 고정: 작업을 선택하면 "핀"이 설정되어 작업이 상태를 변경하는 동안에도 계속 선택됩니다. p를 눌러 핀을 해제하거나 호버 중인 작업을 고정할 수 있습니다. 이 기능은 위에 설명된 대로 지속적인 기본 설정입니다.
- u 및 d로 로그 스크롤: 이제 u를 눌러 로그를 위로 스크롤하고 d를 눌러 로그를 아래로 스크롤할 수 있습니다.
- m로 자세히 알아보기: m를 누르면 사용 가능한 모든 키 바인딩을 나열하는 팝업이 표시됩니다.
Watch Mode 캐싱 Experimental
Watch Mode는 Task Graph에 따라 작업을 다시 실행하는 monorepo 인식 감시자입니다. 이를 통해 많은 작고 덜 강력한 감시자 스크립트가 아닌 단일의 전역적이고 의존성을 인식하는 감시자를 활용하여 monorepo에서 작업하는 새로운 방법을 제공합니다.
이번 릴리스에서는 Watch Mode에 실험적 기능으로 캐싱을 추가합니다. 활성화하려면 --experimental-write-cache 플래그를 사용하세요:
Watch Mode에 대해 자세히 알아보려면 문서를 방문하세요.
순환 의존성 권장 사항
순환 의존성은 Turborepo의 Task Graph에서 비결정적 순환을 생성하는 패키지 그래프의 루프입니다. 그러나 작업 그래프에 루프가 있는 경우 Turborepo는 두 작업이 서로 의존하기 때문에 어떤 작업이 먼저 오는지 결정할 수 없습니다.
monorepo에서 Turborepo를 채택하는 동안 Turborepo가 이전 작업 실행기보다 더 정교하고 빠른 Task Graph를 생성하므로 순환 의존성을 발견할 수 있습니다. 이전에는 Turborepo가 저장소의 Package Graph에 존재하는 순환에 관련된 모든 패키지를 단순히 나열했습니다. 이제 Turborepo는 그래프의 순환을 제거하기 위해 끊어야 하는 의존성 관계를 포함합니다.
아래 터미널 출력의 이전과 이후를 비교하세요:
node_modules의 schema.json
schema.json 파일은 JSON 파일에 대한 편집기에서 자동 완성 및 유효성 검사를 제공합니다. https://turborepo.com/schema.json에 호스팅된 turbo.json용 schema.json의 웹 액세스 가능 버전이 있지만 일부 개발자는 설치된 turbo 버전과 동기화하기 위해 node_modules에서 파일을 가져오는 것을 선호합니다.
이번 릴리스부터 패키지 관리자의 설치 명령을 실행한 후 node_modules에서 schema.json을 사용할 수 있습니다:


node_modules 위치
저장소의 루트에 turbo를 설치하는 것이 좋으므로 스키마 경로는 저장소 루트의
node_modules를 가리켜야 합니다. 패키지
구성에서는
../../node_modules/turbo/schema.json과 같은 경로를 사용해야 할 수 있습니다.
자세한 정보는 문서를 방문하세요.
ESLint Flat Config 지원
Turborepo 2.4는 2024년 10월 5일 ESLint v8의 수명 종료에 따라 eslint-config-turbo 및 eslint-plugin-turbo에서 ESLint v9에 대한 지원을 도입합니다.
구성 및 플러그인은 ESLint v8을 여전히 사용하는 사용자를 위해 원활한 전환을 보장하기 위해 이전 버전과 호환됩니다.
자세한 정보는 문서를 방문하세요.
기타 변경 사항
감사의 말 및 커뮤니티
Turborepo는 핵심 팀을 포함한 모든 기여자들의 결합된 작업의 결과입니다: Anthony, Chris, Dimitri, Nicholas, 그리고 Tom.
Turborepo를 여러분의 빌드 도구로 만들어 주시는 지속적인 지원, 피드백 및 협력에 감사드립니다. 참여 방법을 알아보려면 커뮤니티 페이지를 방문하세요.
또한 이번 Turborepo 릴리스에 기여해 주신 모든 분들께 감사드립니다: @aaronccasanova, @AlvaroParker, @ankur-arch, @arosequist, @atimmer, @bgw, @bitttttten, @chaficnajjar, @codexshell, @eps1lon, @gianelli99, @glitched-w0rld, @JasonnnW3000, @jbrocksfellas, @jeremy-code, @jonathandsouza, @Juneezee, @kayumuzzaman, @krlvi, @maciej-ka, @ognevny, @olets, @pkerschbaum, @romanofski, @shivam-pawar, @takaebato, @tevem1207, @thebrubaker, @Tofandel, @trivikr, @yamz8, 그리고 @zsh77.