Turborepo 얕게 알기
-
패키지 간 의존성 그래프를 이해하는 태스크 러너 + 캐시
-
각 패키지의 스크립트 (build, lint, tsc:check..)을 올바른 순서로, 필요한 것만, 병렬로, 캐시해서 돌려주는 오케스트레이터.
-
의존성 관리는 yarn, bun 같은 도구가 해주고 태스크의 의존성 관리를 터보레포가 해준다.
-
즉 빌드 순서를 자동화해주고, 캐싱을 해주고, 병렬실행을 해줌.
-
태스크란?
- 각 패키지의 pacakge.json scripts 한 줄
-
turbo.json은 태스크 목록이 아니라 태스크 실행 규칙.
멘탈모델 1. 캐럿(^): 내 의존성 먼저
"turbo:build": {
"dependsOn": ["^turbo:build"] // ^ = 내가 의존하는 패키지들의 build 먼저
}
- 나를 빌드하기 전에, 내가
workspace:*로 의존하는 패키지들의 빌드를 먼저 끝내라.
멘탈모델 2. outputs: 캐시의 대상
- turbo는 입력(소스+설정+env)의 해시를 계산해서, 바뀐게 없으면 태스크를 아예 안돌리고 이전 outputs 를 복원함.
멘탈모델3. cache:false + persistent:true = 오래 떠 있는 프로세스
- dev 서버처럼 끝나지 않고 계속 떠 있는 태스크는 캐시 안하고, 퍼시스턴스로 표시.