Turborepo 2.0
Turborepo 2.0은 JavaScript 및 TypeScript 저장소의 개발자 경험을 개선합니다. 주요 기능은 다음과 같습니다:
- 새로운 터미널 UI: 상호작용 가능한 작업과 더 명확한 로그
- Watch Mode: 저장소의 모든 도구를 위한 의존성 인식 작업 감시자
- 완전히 새로운 문서: 핵심 monorepo 개념, 새로워진 API 참조 및 생태계 도구 가이드
- 라이선스 및 유지보수 업데이트: MIT 라이선스로 업그레이드 및 장기 지원 정책 추가
npx @turbo/codemod migrate를 실행하여 지금 업데이트하거나 npx create-turbo@latest로 시작하세요.
업데이트 지침은 업그레이드 가이드를 참조하세요. 주요 변경 사항은 아래에 나열되어 있습니다.
새로운 터미널 UI
Turborepo 1.13에서 개선된 터미널 UI가 개발 속도를 어떻게 향상시킬 수 있는지 알아보기 위해 실험적 인터페이스를 출시했습니다. RFC 프로세스를 통해 여러분의 피드백을 바탕으로 커뮤니티와 함께 개선된 로컬 경험을 설계할 수 있었습니다. 참여해 주신 분들께 감사드립니다.
오늘, 새로운 UI를 안정 버전으로 출시하며, 이와 함께 많은 요청을 받았던 기능들을 활성화합니다.
로그 명확성 개선
2.0 이전에는 turbo가 라이브러리 및 애플리케이션 작업 중에 로그를 스트림으로 출력했습니다. 이는 때때로 압도적일 수 있었는데, 섞인 로그들로 인해 특정 작업에서 무슨 일이 일어나고 있는지 이해하기 어려웠습니다.
이번 UI 반복에서는 화살표 키를 사용하여 개별 작업을 선택하고 한 번에 하나씩 로그를 검사할 수 있어, 집중하고 싶은 로그를 더 쉽게 읽을 수 있습니다.
Good to know:
이전 버전의 turbo에서 사용하던 스트림 로그 보기는 --log-order 플래그를
사용하여 로컬 개발에서 여전히 사용할 수 있습니다. 이 옵션을 사용하면 작업이
상호작용하지 않으며 일부 도구가 예기치 않게 터미널을 지울 수 있습니다.
상호작용 작업
많은 도구들이 중요한 기능을 위해 스크립트와 상호작용할 수 있도록 허용합니다. 하지만 이전 버전의 Turborepo에서는 스크립트가 turbo 내부에 갇혀 있어 상호작용할 수 없었습니다.
이제 개별 작업의 셸에 들어가서 인터페이스에 직접 입력하여 stdin을 통해 스크립트에 입력을 전달할 수 있습니다. 이를 통해 Jest 또는 Vitest로 특정 테스트 스위트 실행, Drizzle 또는 Prisma로 데이터베이스 마이그레이션 처리 등의 워크플로우를 사용할 수 있습니다.
작업을 상호작용으로 표시하려면 정의에 "persistent": true를 추가하세요:


UI에서 작업을 선택한 상태에서 Enter 키를 사용하여 작업의 셸에 진입하고 CTRL+Z로 종료할 수 있습니다.
지속적 및 상호작용 작업에 대해 자세히 알아보려면 문서를 방문하세요.
Watch Mode
Turborepo의 다중 작업 동시 실행 기능은 더 빠른 피드백 루프를 제공하여 신속한 배포를 지원합니다. 로컬에서 작업할 때 Turborepo의 병렬화를 최대한 활용하려면, 변경 사항이 있을 때마다 코드를 다시 실행할 수 있는 "감시자" 기능이 도구에 필요합니다. 안타깝게도 많은 일반 도구들이 이 기능을 제공하지 않으며, 대부분의 도구가 monorepo를 인식하지 못해 저장소의 다른 스크립트에 의존하는 스크립트에 문제가 발생합니다.
오늘, 모든 도구에 이 기능을 제공하기 위해 Watch Mode를 출시합니다:
turbo watch를 사용하면 Turborepo가 소스 코드 변경 시 작업을 다시 실행합니다. 작업은 turbo run과 마찬가지로 turbo.json의 의존성 그래프 및 구성을 사용하여 실행됩니다.
문서에서 Watch Mode에 대해 자세히 알아보세요.
완전히 새로운 문서
이번 릴리스와 함께 이전 버전의 강점을 기반으로 한 개선된 문서를 출판합니다. 여러분의 피드백을 반영하여 문서에는 다음이 포함됩니다:
- 더 많은 monorepo 기본 사항 및 사용 방법
- 선호하는 도구를 Turborepo와 통합하는 가이드
- 더 명확한 정보 구조 및 개선된 검색
주요 변경 사항
2.0으로 업데이트하는 방법은 업그레이드 가이드를 참조하세요.
구성
turbo.json의 주요 변경 사항은 npx @turbo/codemod migrate를 사용하여
업데이트할 수 있습니다.
package.json의turbo필드 무시 (PR)- Turborepo의 기본 디스크 캐시 위치가
node_modules/.cache에서.turbo/cache로 이동 (PR) turbo.json의pipeline키가tasks로 이름 변경 (PR)inputs/outputs의 디렉토리 파일 글로브가 디렉토리 내용 포함 (예:dist및dist/는dist/**와 동일) (PR)- 명확성을 위해
outputMode키를outputLogs로 이름 변경하고--output-logs플래그와 일치시킴 (PR)- 이 변경 사항은
resolvedTaskConfig의 Run Summaries에 반영됩니다
- 이 변경 사항은
dependsOn및globalDependencies의 환경 변수 구문에서 오류 발생 (1.4 이후 더 이상 사용되지 않음) (PR)globalDotEnv및dotEnv제거되고inputs에.env파일 포함으로 대체 (PR)--ignore제거되고--filter및 아래 그래프 정확성 변경 사항으로 대체 (PR)
정확성
- 환경 변수에 대한 Strict Mode가 이제 기본값이며 Loose Mode에서 변경됨 (PR)
- Workspace 루트 디렉토리가 이제 모든 패키지의 암묵적 의존성임 (PR)
--scope플래그 제거 (1.2 이후 더 이상 사용되지 않음) (PR)- 패키지는
package.json에name이 있어야 함 (PR) - 루트
package.json의packageManager필드가 이제 필수임 (PR) - 루트
package.json의engines필드가 이제 해싱에 사용됨 (PR) --filter가 더 이상 패키지 이름에 대해 네임스페이스를 추론하지 않음 (PR)--filter가 패키지 이름 또는 디렉토리가 일치하지 않을 때 오류 발생 (PR)--only가 패키지 의존성만이 아닌 작업 의존성을 제한함 (PR)
기타
커뮤니티
Turborepo의 지속적인 성장과 채택을 보게 되어 기쁩니다:
- 25.2k+ GitHub Stars
- 2.3m+ 주간 NPM 다운로드
- Vercel Remote Cache를 사용하여 347년의 컴퓨팅 시간 절약
Turborepo는 핵심 팀을 포함한 모든 기여자들의 결합된 작업의 결과입니다: Anthony, Chris, Greg, Mehul, Mitch, Nicholas, 그리고 Tom.
Turborepo를 여러분의 빌드 도구로 만들어 주시는 지속적인 지원, 피드백 및 협력에 감사드립니다. 아직 참여하지 않으셨다면 GitHub 및 Discord에서 대화에 참여하세요.