프로젝트 기여자들이 작업하는데 필요한 준비 및 작업 과정을 설명합니다.
- Node.js LTS
- pnpm
프로젝트를 클론합니다:
git clone [email protected]:titicacadev/triple-frontend.git && cd triple-frontend
디펜던시를 설치합니다:
pnpm install
- 작업자가 코드 기여
- 의존성 변경이 있으면,
pnpm run sync-deps
명령어 실행 - 커밋 & 푸시
- PR 생성 & 리뷰
- 버전 생성 (Optional):
pnpm run version
(경우에 따라 PR과 함께 혹은 별도로 생성) - main 머지
/release
커맨드로 배포- 배포 (Optional): CD에서 패키지 publish, npm 페이지 통해서 확인
lerna create [패키지명]
커맨드로 패키지 추가- 적절한
package.json
및tsconfig.json
수정 및 생성 pnpm run sync-deps
명령어 실행src
에 코드 작성- 버전 생성 (Optional): 기존 패키지에서 분리가 일어나서 API 인터페이스에
변경이 있었다면 MAJOR, 기존 패키지와 관련 없는 패키지 추가라면 MINOR 버전
올림
pnpm run version -- major
pnpm run version -- minor
- 커밋 & 푸시
- PR 생성 & 리뷰
- main 머지
/release
커맨드로 배포- 배포 (Optional): CD에서 패키지 publish, npm 페이지 통해서 확인
pnpm install --workspace=<의존성을 추가할 대상 패키지> <추가할 패키지>
devDependency이면 --dev를, peer dependency이면 --peer를 추가합니다.
각 패키지별 유닛 테스트를 추가할 예정입니다.
- 모든 PR 리뷰는 GitHub의
@frontend
팀에게 자동으로 할당됩니다. - 팀 멤버 2인 이상이 승인해야 머지할 수 있습니다.
- 머지 전 머지 체크리스트를 모두 확인해야 합니다.
새로운 버전에 반영할 내용은 마일스톤을 통해 관리합니다. 가장 먼저 할 일은 이번 릴리즈에 해당하는 마일스톤에서 완료되지 않은 작업을 챙기는 일입니다. 각 이슈의 작업자에게 찾아가 이번 릴리즈에 포함할 예정인지 물어봅시다. 이번 릴리즈에 포함해야 하는데 리뷰가 덜 된 Pull Request는 리뷰를 독려합니다.
모든 패키지를 동시에 같은 버전으로 릴리즈합니다. 버저닝 방식은 하위 패키지 전체를
아우르는 Semantic Versioning을 사용합니다: MAJOR.MINOR.PATCH
로
버저닝하며, 아래 설명을 참고하여 해당하는 버전을 올립니다.
MAJOR
version when you make incompatible API changes,MINOR
version when you add functionality in a backwards compatible manner, andPATCH
version when you make backwards compatible bug fixes.
- 특정 패키지에 기능 추가: 인터페이스 변경 없이 특정 패키지의 기능이
추가되었다면
MINOR
버전을 올립니다. - 패키지 추가: 다른 패키지에 영향이 없는 범위에서 패키지가 추가되었다면 기능
추가로 볼 수 있고,
MINOR
버전을 올립니다. - 패키지 분리: 분리 대상인 패키지의 인터페이스에 변경이 일어납니다. 해당
패키지를 이용하는 프로젝트들에 코드 변경이 필요하기 때문에
MAJOR
버전 올림에 해당합니다. - 인터페이스 개선: 인터페이스 변경이 하위 호환을 보장하는지 여부에 따라서
MAJOR
혹은MINOR
버전 올림에 해당합니다. - 버그 수정: 인터페이스 변경이 없는 버그 수정은
PATCH
버전 올림입니다.
마일스톤의 모든 이슈가 완료되었다면 이제 새 버전을 릴리즈할 차례입니다. 다음 순서로 진행합니다.
- 최신 기본 브랜치에서 릴리즈용 브랜치를 만듭니다.
git switch -c release/v2.9.0
- 새로운 버전을 올립니다. 원하는 버전을 선택하면 lerna가 알아서 모든 패키지의 버전을 바꿉니다.
pnpm run version
> version
> lerna version --no-push --force-publish
lerna notice cli v3.22.1
lerna info current version 2.8.0
lerna WARN force-publish all packages
lerna info Assuming all packages changed
? Select a new version (currently 2.8.0) (Use arrow keys)
Patch (2.8.1)
❯ Minor (2.9.0)
Major (3.0.0)
Prepatch (2.8.1-alpha.0)
Preminor (2.9.0-alpha.0)
Premajor (3.0.0-alpha.0)
Custom Prerelease
Custom Version
-
Pull Request를 생성하여 변경 내역을 기본 브랜치로 머지합니다. 이때, Pull Request에
release
라벨과 마일스톤이 등록되어 있어야 CHANGELOG가 자동으로 작성됩니다. 릴리즈 PR을 생성할 때 반드시release
라벨과 마일스톤을 등록해주세요! -
#triple-web-dev-notifications
채널에서/release triple-frontend main
을 입력하여 CD를 실행합니다. -
릴리즈가 완료되면 마일스톤을 닫고, 다음 minor 버전의 마일스톤을 생성합니다.
- Docs를 비롯한 패키지 내에서 다른 패키지를 import하는 경우, 대상 패키지를 빌드한 이후에만 의도한 동작을 수행할 수 있습니다.
- 뷰 및 기능에 변경이 있는 기여인 경우, docs 페이지도 그에 준하게 업데이트해야 합니다.