Skip to content

Latest commit

 

History

History
139 lines (102 loc) · 5.29 KB

CONTRIBUTING.md

File metadata and controls

139 lines (102 loc) · 5.29 KB

기여하기

프로젝트 기여자들이 작업하는데 필요한 준비 및 작업 과정을 설명합니다.

사전 준비

  • Node.js LTS
  • pnpm

설치

프로젝트를 클론합니다:

git clone [email protected]:titicacadev/triple-frontend.git && cd triple-frontend

디펜던시를 설치합니다:

pnpm install

작업 과정

기능 추가

  1. 작업자가 코드 기여
  2. 의존성 변경이 있으면, pnpm run sync-deps 명령어 실행
  3. 커밋 & 푸시
  4. PR 생성 & 리뷰
  5. 버전 생성 (Optional): pnpm run version (경우에 따라 PR과 함께 혹은 별도로 생성)
  6. main 머지
  7. /release 커맨드로 배포
  8. 배포 (Optional): CD에서 패키지 publish, npm 페이지 통해서 확인

패키지 추가

  1. lerna create [패키지명] 커맨드로 패키지 추가
  2. 적절한 package.jsontsconfig.json 수정 및 생성
  3. pnpm run sync-deps 명령어 실행
  4. src에 코드 작성
  5. 버전 생성 (Optional): 기존 패키지에서 분리가 일어나서 API 인터페이스에 변경이 있었다면 MAJOR, 기존 패키지와 관련 없는 패키지 추가라면 MINOR 버전 올림
    • pnpm run version -- major
    • pnpm run version -- minor
  6. 커밋 & 푸시
  7. PR 생성 & 리뷰
  8. main 머지
  9. /release 커맨드로 배포
  10. 배포 (Optional): CD에서 패키지 publish, npm 페이지 통해서 확인

패키지에 의존성 추가

pnpm install --workspace=<의존성을 추가할 대상 패키지> <추가할 패키지>

devDependency이면 --dev를, peer dependency이면 --peer를 추가합니다.

테스트

각 패키지별 유닛 테스트를 추가할 예정입니다.

리뷰

  • 모든 PR 리뷰는 GitHub의 @frontend 팀에게 자동으로 할당됩니다.
  • 팀 멤버 2인 이상이 승인해야 머지할 수 있습니다.
  • 머지 전 머지 체크리스트를 모두 확인해야 합니다.

배포

새로운 버전에 반영할 내용은 마일스톤을 통해 관리합니다. 가장 먼저 할 일은 이번 릴리즈에 해당하는 마일스톤에서 완료되지 않은 작업을 챙기는 일입니다. 각 이슈의 작업자에게 찾아가 이번 릴리즈에 포함할 예정인지 물어봅시다. 이번 릴리즈에 포함해야 하는데 리뷰가 덜 된 Pull Request는 리뷰를 독려합니다.

모든 패키지를 동시에 같은 버전으로 릴리즈합니다. 버저닝 방식은 하위 패키지 전체를 아우르는 Semantic Versioning을 사용합니다: MAJOR.MINOR.PATCH로 버저닝하며, 아래 설명을 참고하여 해당하는 버전을 올립니다.

  1. MAJOR version when you make incompatible API changes,
  2. MINOR version when you add functionality in a backwards compatible manner, and
  3. PATCH version when you make backwards compatible bug fixes.
  • 특정 패키지에 기능 추가: 인터페이스 변경 없이 특정 패키지의 기능이 추가되었다면 MINOR 버전을 올립니다.
  • 패키지 추가: 다른 패키지에 영향이 없는 범위에서 패키지가 추가되었다면 기능 추가로 볼 수 있고, MINOR 버전을 올립니다.
  • 패키지 분리: 분리 대상인 패키지의 인터페이스에 변경이 일어납니다. 해당 패키지를 이용하는 프로젝트들에 코드 변경이 필요하기 때문에 MAJOR 버전 올림에 해당합니다.
  • 인터페이스 개선: 인터페이스 변경이 하위 호환을 보장하는지 여부에 따라서 MAJOR 혹은 MINOR 버전 올림에 해당합니다.
  • 버그 수정: 인터페이스 변경이 없는 버그 수정은 PATCH 버전 올림입니다.

마일스톤의 모든 이슈가 완료되었다면 이제 새 버전을 릴리즈할 차례입니다. 다음 순서로 진행합니다.

  1. 최신 기본 브랜치에서 릴리즈용 브랜치를 만듭니다.
git switch -c release/v2.9.0
  1. 새로운 버전을 올립니다. 원하는 버전을 선택하면 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
  1. Pull Request를 생성하여 변경 내역을 기본 브랜치로 머지합니다. 이때, Pull Request에 release 라벨과 마일스톤이 등록되어 있어야 CHANGELOG가 자동으로 작성됩니다. 릴리즈 PR을 생성할 때 반드시 release 라벨과 마일스톤을 등록해주세요!

  2. #triple-web-dev-notifications 채널에서 /release triple-frontend main을 입력하여 CD를 실행합니다.

  3. 릴리즈가 완료되면 마일스톤을 닫고, 다음 minor 버전의 마일스톤을 생성합니다.

주의사항

  • Docs를 비롯한 패키지 내에서 다른 패키지를 import하는 경우, 대상 패키지를 빌드한 이후에만 의도한 동작을 수행할 수 있습니다.
  • 뷰 및 기능에 변경이 있는 기여인 경우, docs 페이지도 그에 준하게 업데이트해야 합니다.