콘텐츠로 이동

변경 세트

pubm은 changeset을 “다음에 무엇을 릴리스해야 하는지”를 남기는 영속적인 기록으로 사용합니다. 커밋 메시지나 브랜치 이름에서 버전을 추론하는 대신, 체크인된 .pubm/changesets/ 파일을 읽어 버전 상승과 changelog 항목으로 바꿉니다.

  • 각 pull request 안에서 검토 가능한 릴리스 계획을 남길 수 있습니다.
  • 패키지 간 버전 상승 계산을 결정적으로 수행할 수 있습니다.
  • changelog 내용을 릴리스 이후가 아니라 릴리스 전에 작성할 수 있습니다.

보류 중인 changeset은 다음 위치에 있습니다.

.pubm/changesets/

대화형 설정 마법사를 실행해 이 디렉터리를 초기화합니다.

Terminal window
pubm init

설정 중에 pubm init은 changeset 워크플로를 활성화할지 묻습니다. 활성화를 선택하면 .pubm/changesets/ 디렉터리가 생성되고, PR 강제를 위한 .github/workflows/changeset-check.yml이 생성되며, changeset 파일을 추적하되 다른 .pubm/ 콘텐츠는 무시하도록 .gitignore가 업데이트됩니다.

Terminal window
pubm changesets add

모노레포에서는 pubm이 어떤 패키지가 영향을 받는지와 각 패키지가 어떤 bump type을 받아야 하는지도 묻습니다.

비대화형으로 사용하려면:

Terminal window
pubm changesets add \
--packages @acme/core,@acme/react \
--bump minor \
--message "Add token-based auth to the public client."
---
"@acme/core": minor
"@acme/react": patch
---
Add token-based auth to the public client.

메타데이터는 버전 계산을 제어합니다. 본문은 changelog 요약이 됩니다.

changeset을 소비하기 전에 먼저 확인합니다.

Terminal window
pubm changesets status
pubm changesets status --verbose
pubm changesets version --dry-run

pubm으로 일반 릴리스 파이프라인을 실행하면 보류 중인 changeset은 버전 단계에서 소비됩니다.

그 흐름은 다음과 같습니다.

  1. 보류 중인 .pubm/changesets/*.md 파일을 읽습니다.
  2. 결과 패키지 버전을 계산합니다.
  3. 매니페스트 버전을 업데이트합니다.
  4. changelog 항목을 생성합니다.
  5. 소비된 changeset 파일을 삭제합니다.
  6. 릴리스 커밋과 태그를 생성합니다.

버전 작업만 미리 수행하고 싶다면 다음을 실행할 수 있습니다.

Terminal window
pubm changesets version

이 명령은 편집용 또는 통제된 워크플로에 유용하지만, pubm이나 pubm --mode ci --phase publish 전에 반드시 실행할 필요는 없습니다.

아직 버전을 소비하지 않고 changelog 텍스트만 만들고 싶다면:

Terminal window
pubm changesets changelog --dry-run
pubm changesets changelog --version 1.8.0

versionSources"all"(기본값)이면, pubm changesets version은 보류 중인 changeset 파일이 없는 패키지에 대해 conventional commits를 자동으로 폴백으로 사용합니다. 이를 통해 팀은 changeset을 점진적으로 도입할 수 있습니다. changeset이 있는 패키지는 changeset을 사용하고, changeset이 없는 패키지는 커밋 히스토리를 폴백으로 사용합니다.

커밋 타입Bump
featminor
fixpatch
perfpatch

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 파일만 사용합니다.

Terminal window
pubm changesets migrate

이 명령은 보류 중인 파일을 .changeset/에서 .pubm/으로 옮깁니다.