Turborepo 1.3
Turborepo 1.3에서는 향상된 캐싱 및 유연성을 제공합니다:
- 제한된 해시 입력:
inputs를 사용하여 캐싱에 영향을 미치는 패키지 폴더의 파일을 지정합니다. - 루트 스크립트 실행 및 캐싱: 모노레포의 루트에서
package.json스크립트를 실행하고 캐시합니다. - 새로운 CI/CD 레시피: 인기 있는 CI 제공업체와 Turborepo를 사용하기 위한 레시피를 추가했습니다.
npm install turbo@latest를 실행하여 오늘 업데이트하세요.
Pipeline inputs
환경 변수, 종속성 및 파이프라인 구성 외에도, turbo는 각 package.json 스크립트의 해시 핑거프린트(turbo가 캐시를 인덱싱하고 스크립트를 다시 실행해야 하는지 판단하는 데 사용하는 키)를 계산할 때 패키지 폴더에 있는 모든 gitignore되지 않은 파일을 고려합니다. Turborepo 1.3+에서는 turbo.json pipeline에서 inputs glob을 지정하여 캐싱을 위한 특정 스크립트와 관련된 파일을 제어할 수 있습니다. 이는 turbo.json에서 다음을 표현할 수 있음을 의미합니다:
- 패키지 또는 앱 폴더의 모든 마크다운 파일 변경 사항 무시하기
- 테스트 파일만 변경된 경우 앱을 다시 빌드하지 않기
- 패키지 또는 폴더에서 소스 파일 또는 테스트 파일이 변경된 경우에만 테스트 다시 실행하기
- 그 외 다양한 사항들
구체적인 예시를 살펴보겠습니다: ./apps/docs-site에 문서 웹사이트용 Next.js 애플리케이션, 일부 패키지 및 모노레포 루트의 ./docs 폴더에 일부 마크다운 파일이 있는 모노레포가 있다고 가정해봅시다.
Next.js docs-site가 ./docs 폴더의 마크다운 파일을 렌더링한다고 가정해봅시다. 이제 앱의 package.json에서 build 스크립트를 설정하여 turbo.json에서 inputs를 사용하여 관련된 파일(및 캐싱에 영향을 미쳐야 하는 파일)을 더 잘 지정할 수 있습니다:


참고: outputs와 마찬가지로 inputs는 관련 package.json을 기준으로 정의되지만, 특정 폴더 외부에 있을 수 있습니다 (예: ../../docs/**).
모노레포 루트에서 스크립트 실행 및 캐시
1.3부터 turbo는 모노레포 루트의 package.json 파일에서 스크립트를 실행하고 캐시할 수 있습니다. 이는 Turborepo로 마이그레이션할 때 크게 도움이 됩니다.
이를 설정하려면 turbo.json의 pipeline 구성에서 "//#<script>": {...} 형식을 사용하여 루트 스크립트를 지정합니다. //는 turbo에게 스크립트가 각 워크스페이스 패키지가 아닌 모노레포 루트를 기준으로 한다는 것을 알려줍니다.
루트 스크립트 및 실행 범위에 대해 주의해야 할 2가지 중요한 사항이 있습니다:
pipeline에 이미"build": {...}가 있지만turbo run build를 실행할 때 모노레포 루트package.json파일에 정의된build스크립트를 포함하려면 구성에"//#build": {...}도 포함하여 루트를 실행 범위에 옵트인할 수 있습니다.- 반대로,
"//#my-script": {...}만 필요한 경우 일반"my-script": {...}항목을 정의할 필요가 없습니다.
루트 스크립트 check-examples를 정의하고 루트를 test에 옵트인하는 샘플 파이프라인은 다음과 같습니다:


참고: 캐싱을 개선하려면 pipeline에서 루트 작업을 선언할 때마다 inputs를 지정하는 것이 좋습니다.
새로운 CI/CD 레시피
다음을 사용하여 Turborepo 및 Remote Caching을 사용하기 위한 레시피를 추가했습니다:
여기에서 보고 싶은 다른 레시피가 있다면 GitHub Discussion을 열어 알려주세요.
기타 버그 수정 및 개선 사항
- git 작업 및 해싱 개선
- 종속성 그래프 분석에서 순환 감지 개선
- Windows ARM 64비트 아키텍처 지원 추가
- Remote Cache 오류 로깅 개선
- Design System 예제에 Storybook 추가
커뮤니티
4월 초 Turborepo v1.2 릴리스 이후, 놀라운 채택률과 커뮤니티 성장을 보았습니다:
- GitHub Stars 8.1k+
- 주간 NPM 다운로드 275k+ (약 2배 증가)
- Turborepo Community Discord 회원 1,200+
- Vercel의 Remote Caching을 통해 5.8년의 컴퓨팅 시간 절감 (약 5배 증가), 현재 주당 7개월 이상 절감
Turborepo는 핵심 팀을 포함한 136명 이상의 기여자들의 결합된 작업의 결과입니다.
이 릴리스는 다음 기여자들의 기여로 완성되었습니다: @gsoltis, @nathanhammond, @tknickman, @jaredpalmer, @zvictor, @ObliviousHarmony, @O4epegb, @rafaeltab, @mcmontseny, @bertspaan, @Jastor11, @enBonnet
Turborepo를 여러분의 빌드 도구로 선택하는 데 대한 지속적인 지원, 피드백 및 협력에 감사드립니다.