!!!잘못된 부분이 있을경우 피드백 환영입니다
Vercel이 인수(참고)한 Turborepo는 JavaScript와 TypeScript 코드 베이스의 모노레포를 위한 고성능 빌드 시스템입니다. (Vercel, AWS, Miro, PayPal, Discord, LINE+의 Universal Video Player에서 사용)
출처 - Turborepo로 모노레포 개발 경험 향상하기
Lerna, yarn workspace, Nx 등 여러 모노레포 프레임워크가 있지만 현재 가장 트렌드 하다고 생각하는 vercel에서 인수해 개발을 하고 있고 zero configuration 지향하고 꾸준하게 업데이트를 하기 때문에 개발 셋팅 하는시간이 많이 줄어 빠르게 개발이 가능하기 때문에 선택하게 되었습니다.
모든 모노레포에는 작업 공간 과 작업 이라는 두 가지 주요 빌딩 블록이 있습니다. 각각 3 개의 작업이 있는 3개의 작업 공간 이 포함된 모노레포가 있다고 가정해 보겠습니다 .
여기서 apps/web 및 apps/doc은 모두 packages/shared 코드를 사용합니다.
Running Tasks
lerna, yarn workspaces 경우
Turborepo는 사용 가능한 모든 CPU에서 가능한 한 많은 작업을 멀티태스킹한다. 즉, 작업은 다음과 같이 실행된다.
most-tools-dont-optimize-for-speed
코드를 변경하지 않고 빌드시 빌드 시간이 92ms 라는 말도 안되는 빌드 타임이 나오는걸 확인 가능합니다.
Turborepo는 계산된 해시(예: ./node_modules/.cache/turbo/~) 를 사용하여 캐시에서 폴더를 찾습니다.
example 에서는 dist/ , .next/ 을 default 로 캐싱하고 있지만 next가 아닌 다른 프로젝트, 프레임워크일 경우 파이프라인을 수정 하면 되겠습니다
ex)
turbo.json
"pipeline": {
"build": {
"outputs": [
- ".next/**"
+ ".nuxt/**"
],
"dependsOn": [
"^build"
]
},
...
https://turborepo.org/
https://github.com/vercel/turborepo/tree/main/examples/design-system
https://engineering.linecorp.com/ko/blog/monorepo-with-turborepo