본문 바로가기
개발개발/Date-project

[date] changeset 을 추가하자

by yelimu 2025. 3. 4.

모노레포의 경우 여러개의 패키지가 동일한 코드베이스에서 관리되기 때문에 

아래의 이유들로 인해.. 버전 관리의 중요성이 더 크다

  • 패키지간 의존성 관리가 중요하다
  • → 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 파일이 생성된다

 

2nd test 라는 코멘트를 남겼다

여기서 아래 명령어를 입력하면 LOG 파일이 생성되고 + 각 앱의 package.json에 버전 정보가 업데이트 된다.

pnpm changeset version

 

우리 프로젝트의 경우에는 위 명령어는 입력하지 않고, bot을 추가해서 PR 생성 시 위에서 생성된 md파일을 감지해 merge 하면서 자동으로 PR을 생성하도록 했다 (github actions 세팅이 필요하다)

PR 올렸을때 버전 업데이트 감지

 

봇 추가하기 : 아래 페이지에서 버튼만 누르면 간단히 추가된다.

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