변경 세트
pubm은 changeset을 “다음에 무엇을 릴리스해야 하는지”를 남기는 영속적인 기록으로 사용합니다. 커밋 메시지나 브랜치 이름에서 버전을 추론하는 대신, 체크인된 .pubm/changesets/ 파일을 읽어 버전 상승과 changelog 항목으로 바꿉니다.
Changeset이 중요한 이유
섹션 제목: “Changeset이 중요한 이유”- 각 pull request 안에서 검토 가능한 릴리스 계획을 남길 수 있습니다.
- 패키지 간 버전 상승 계산을 결정적으로 수행할 수 있습니다.
- changelog 내용을 릴리스 이후가 아니라 릴리스 전에 작성할 수 있습니다.
파일 위치
섹션 제목: “파일 위치”보류 중인 changeset은 다음 위치에 있습니다.
.pubm/changesets/대화형 설정 마법사를 실행해 이 디렉터리를 초기화합니다.
pubm init설정 중에 pubm init은 changeset 워크플로를 활성화할지 묻습니다. 활성화를 선택하면 .pubm/changesets/ 디렉터리가 생성되고, PR 강제를 위한 .github/workflows/changeset-check.yml이 생성되며, changeset 파일을 추적하되 다른 .pubm/ 콘텐츠는 무시하도록 .gitignore가 업데이트됩니다.
Changeset 만들기
섹션 제목: “Changeset 만들기”pubm changesets add모노레포에서는 pubm이 어떤 패키지가 영향을 받는지와 각 패키지가 어떤 bump type을 받아야 하는지도 묻습니다.
비대화형으로 사용하려면:
pubm changesets add \ --packages @acme/core,@acme/react \ --bump minor \ --message "Add token-based auth to the public client."Changeset 파일의 내용
섹션 제목: “Changeset 파일의 내용”---"@acme/core": minor"@acme/react": patch---
Add token-based auth to the public client.메타데이터는 버전 계산을 제어합니다. 본문은 changelog 요약이 됩니다.
보류 중인 변경 확인
섹션 제목: “보류 중인 변경 확인”changeset을 소비하기 전에 먼저 확인합니다.
pubm changesets statuspubm changesets status --verbosepubm changesets version --dry-runChangeset이 소비되는 방식
섹션 제목: “Changeset이 소비되는 방식”pubm으로 일반 릴리스 파이프라인을 실행하면 보류 중인 changeset은 버전 단계에서 소비됩니다.
그 흐름은 다음과 같습니다.
- 보류 중인
.pubm/changesets/*.md파일을 읽습니다. - 결과 패키지 버전을 계산합니다.
- 매니페스트 버전을 업데이트합니다.
- changelog 항목을 생성합니다.
- 소비된 changeset 파일을 삭제합니다.
- 릴리스 커밋과 태그를 생성합니다.
버전 작업만 미리 수행하고 싶다면 다음을 실행할 수 있습니다.
pubm changesets version이 명령은 편집용 또는 통제된 워크플로에 유용하지만, pubm이나 pubm --mode ci --phase publish 전에 반드시 실행할 필요는 없습니다.
Changelog 생성
섹션 제목: “Changelog 생성”아직 버전을 소비하지 않고 changelog 텍스트만 만들고 싶다면:
pubm changesets changelog --dry-runpubm changesets changelog --version 1.8.0Conventional commit 폴백
섹션 제목: “Conventional commit 폴백”versionSources가 "all"(기본값)이면, pubm changesets version은 보류 중인 changeset 파일이 없는 패키지에 대해 conventional commits를 자동으로 폴백으로 사용합니다. 이를 통해 팀은 changeset을 점진적으로 도입할 수 있습니다. changeset이 있는 패키지는 changeset을 사용하고, changeset이 없는 패키지는 커밋 히스토리를 폴백으로 사용합니다.
기본 커밋 타입 매핑
섹션 제목: “기본 커밋 타입 매핑”| 커밋 타입 | Bump |
|---|---|
feat | minor |
fix | patch |
perf | patch |
footer에 BREAKING CHANGE가 있거나 ! 접미사(예: feat!:)를 사용하면 항상 major bump가 발생합니다.
커스텀 매핑 설정
섹션 제목: “커스텀 매핑 설정”pubm.config.ts에서 기본 매핑을 재정의합니다.
export default defineConfig({ versionSources: "all", conventionalCommits: { types: { feat: "minor", fix: "patch", perf: "patch", docs: "patch", }, },});versionSources: "commits"로 설정하면 conventional commits만 사용하고 changeset 파일은 완전히 무시합니다. versionSources: "changesets"로 설정하면 폴백을 비활성화하고 changeset 파일만 사용합니다.
.changeset/에서 마이그레이션
섹션 제목: “.changeset/에서 마이그레이션”pubm changesets migrate이 명령은 보류 중인 파일을 .changeset/에서 .pubm/으로 옮깁니다.