모노레포의 경우 여러개의 패키지가 동일한 코드베이스에서 관리되기 때문에
아래의 이유들로 인해.. 버전 관리의 중요성이 더 크다
- 패키지간 의존성 관리가 중요하다
- → API 호환성 보장
- 중복된 업데이트 방지, 호환되지 않는 패키지 설치 방지
- 버그 해결 시 어떤 버전에서 문제가 시작되었는지 추적 가능함
이러한 버전 관리 방법론 중 대표적으로 쓰이는게 Semantic Version (SemVer) 인듯 하다.
MAJOR.MINOR.PATCH
패키지 설치하다보면 이런 버전 정보를 쉽게 접하게 된다.
호환 가능성 여부 X -> major
호환 가능성 여부 O -> (기능추가)minor / (버그)patch
- 모든 버전은 1씩 증가, 특정 버전이 올라가면 하위 버전은 0으로 초기화
- 틸드범위(~)
- MINOR 버전이 지정되어있다면 PATCH level 변경 허용 ex. ~1.3.2
- MINOR 버전이 지정되어있지 않으면 MINOR level 변경 허용 ex. ~2
- 캐럿범위(^)
- 가장 왼쪽에 0이 아닌 요소를 수정하지 않는 범위에서 변경 허용
- 1.3.x : MINOR ,PATCH level 업데이트 허용
- 0.1.x : PATCH level 업데이트 허용
- 0.0.3 : 업데이트 허용 X
MAJOR 버전이 0인 경우 아직 1.0.0 이 정식으로 릴리즈 된것이 아니다
이러한 SemVer 관리를 도와주는 도구가 바로 Changeset 이다.
// 설치 방법
pnpm add -Dw @changesets/cli
// 설치 후 초기화
pnpm changeset init
// 변경사항 발생 시
pnpm changeset
cli는 터미널에서 명령어로 changeset을 실행할 수 있게 해준다.
pnpm changeset 를 입력하면 터미널에서 업데이트 대상을 선택할 수 있다 (스페이스바로 토글)
major bump(버전 업데이트)를 할 것 인지, minor bump를 할것인지 각각 체크하고 코멘트를 남기면
.changeset 폴더에 ~~.md 파일이 생성된다
여기서 아래 명령어를 입력하면 LOG 파일이 생성되고 + 각 앱의 package.json에 버전 정보가 업데이트 된다.
pnpm changeset version
우리 프로젝트의 경우에는 위 명령어는 입력하지 않고, bot을 추가해서 PR 생성 시 위에서 생성된 md파일을 감지해 merge 하면서 자동으로 PR을 생성하도록 했다 (github actions 세팅이 필요하다)
봇 추가하기 : 아래 페이지에서 버튼만 누르면 간단히 추가된다.
https://github.com/apps/changeset-bot
GitHub · Build and ship software on a single, collaborative platform
Join the world's most widely adopted, AI-powered developer platform where millions of developers, businesses, and the largest open source community build software that advances humanity.
github.com
'개발개발 > Date-project' 카테고리의 다른 글
[date] pnpm-workspace.yaml 설정하기 (0) | 2025.03.06 |
---|---|
[date] tsconfig 설정하기 (0) | 2025.03.05 |
[date] turborepo config 설정하기 - eslint (0) | 2025.03.05 |
[date] Slack - GitHub 웹훅(webhook) 연동하기 (0) | 2025.03.04 |
[date] turborepo 로 mono repo 구축하기 (0) | 2025.03.04 |