-
Notifications
You must be signed in to change notification settings - Fork 2
turborepo로 모노레포 구성하기
HeeChul Yang edited this page Dec 5, 2024
·
2 revisions
├── yarn.lock
├── package.json # 루트 package.json 파일
├── turbo.json # turborepo 설정 파일
├── node_modules
└── packages
├── client # React 앱
│ └── package.json
└── server # Nest.js 서버
└── package.json
yarn add turbo
├── yarn.lock
├── package.json # 루트 package.json 파일
└── node_modules
- 루트에
turbo.json
파일 생성
{
"$schema": "https://turbo.build/schema.json",
"ui": "tui",
"pipeline": {
"build": {
"dependsOn": ["^build"],
"outputs": ["dist/**"]
},
"dev": {
"dependsOn": ["build"]
},
"lint": {
"outputs": []
},
"test": {
"outputs": []
},
"start": {
"dependsOn": ["build"]
}
}
}
🚀 turbo는 tasks
대신 pipeline
을 사용한다 !
tasks
를 사용하면 parse error 발생 !
- 이 항목은 JSON 스키마의 URL을 나타내며, Turborepo가 이 설정 파일을 검증하는 데 사용
- turborepo 출력 UI 를 지정.
- tui 로 설정하면, GUI가 표시된다.
- 작업(작업의 이름과 의존성 등)을 정의하는 객체
- 이 작업이 실행되기 전에 어떤 작업이 완료되어야 하는지.
-
"^build"
는 모든 하위 작업공간에서의build
작업이 완료되어야 한다는 의미. - 즉, 이 작업은 루트 작업공간에서의
build
작업이 먼저 수행되어야 한다는 것
- 이 작업의 결과물이 어디에 생성되는지.
-
["dist/**"]
는dist
디렉토리 내의 모든 파일과 서브디렉토리(모든 빌드 결과)를 포함한다는 의미
- 모든 tasks 에 영향을 주는 공통적인 의존성 파일을 지정.
- 이 목록의 파일을 변경하면, 모든 태스크의 캐시가 무효화.
- Turborepo 가 캐시 키를 생성할 때 이 목록의 환경 변수는 무시
- 즉, 이 값들이 변경되어도, 캐시가 유지
├── yarn.lock
├── package.json # 루트 package.json 파일
├── turbo.json # turborepo 설정 파일
└── node_modules
- 루트의
package.json
설정
{
"private": true,
"workspaces": ["packages/*"],
"scripts": {
"start": "turbo run start",
"build": "turbo run build",
"dev": "turbo run dev",
"lint": "turbo run lint",
"test": "turbo run test"
},
"devDependencies": {
"turbo": "^1.0.0"
}
}
- 이 패키지가 공개적으로 배포되지 않도록 하는 플래그
-
true
가 설정되면, 이 패키지는 npm 레지스트리에 배포되지 않음. - monorepo 프로젝트에서는 이 설정을 사용하여 실수로 패키지가 공개되는 것을 방지
-
["packages/*"]
는packages
폴더 안에 있는 모든 서브 폴더(패키지)를 작업공간으로 포함시킨다는 의미
- 이 항목은 커맨드 라인에서 실행할 수 있는 스크립트 명령어를 정의
- 각 스크립트는 특정 작업을 수행하는 명령어를 포함
- 개발 환경에서만 필요한 의존성을 정의
- package.json의 workspace 필드에 설정한 이름의 폴더를 생성
- 하위에 관리하고자 하는 프로젝트 생성 (ex/ client, server etc)
├── yarn.lock
├── package.json # 루트 package.json 파일
├── turbo.json # turborepo 설정 파일
├── node_modules
└── packages
├── client # React 앱
│ └── package.json
└── server # Nest.js 서버
└── package.json
- react 프로젝트 생성
cd packages/client
npx create-react-app . --template typescript
- client의
package.json
에 lint script 추가
{
...
"scripts": {
...
"lint": "eslint src --ext .ts"
}
}
- nest 프로젝트 생성
cd packages/server
npx @nestjs/cli new . --package-manager yarn
-
.git
삭제
- react와 nest 모두 3000번 포트를 사용하므로, 이를 변경해줘야 한다.
- 일단은 react의 port를 3001로 변경해주자.
{
...
"scripts": {
...
"start": "PORT=3001 react-scripts start"
},
}
yarn start
- 1. 1주차 팀 빌딩 및 기획 회의
- 2. 1주차 두 번째 기획 회의
- 3. 1주차 세 번째 기획 회의
- 4. 1주차 기획 공유 발표 전 회의
- 5. 2주차 라이브러리, 개발 환경 관련 회의
- 6. 2주차 모노레포 관련 회의
- 7. 2주차 실시간 통신 기술 회의
- 8. 2주차 실시간 목표치, 발표 준비 회의
- 9. 3주차 주간 계획 회의
- 10. 4주차 주간 계획 회의
- 11. 4주차 팀 목표 재설정 회의
- 12. 4주차 기능 추가 회의
- 13. 4주차 플래닝 포커 회의
- 14. 5주차 주간 계획 회의
- 15. 5주차 이미지 업로드 관련 회의
- 16. 5주차 칸반 보드 회의
- 17. 5주차 데모 및 최종 발표 회의
🧾 회고 캘린더