릴리스
릴리스는 Changesets (opens in a new tab)로 자동화되어 있습니다. 노트북에서 직접 배포하는 사람은 없습니다.
파이프라인
PR이 main에 머지됨
│
▼
release.yml 실행
│
├─ 대기 중인 changeset이 있는가?
│ │
│ ├─ 예 → "Version Packages" PR 생성/갱신
│ │ (버전 범프, CHANGELOG 작성)
│ │
│ └─ 그 PR이 머지됨 → pnpm changeset publish → npm
│
└─ changeset 없음 → 아무 일도 없음워크플로
ci.yml
main에 대한 모든 푸시와 PR에서 실행됩니다.
- pnpm install --frozen-lockfile
- pnpm -r buildNode 20, pnpm 9. 이것이 관문입니다 — 어디든 타입 오류가 있으면 실패합니다.
release.yml
main 푸시와 수동 실행에서 동작합니다. Node 24, pnpm 9.
changesets/action@v1을 publish: pnpm changeset publish와 함께 씁니다.
권한: contents: write, id-token: write, pull-requests: write.
동시성 키가 워크플로 + ref라 겹치는 실행은 취소됩니다.
changeset 설정
{
"changelog": "@changesets/cli/changelog",
"commit": false,
"access": "public",
"baseBranch": "main",
"updateInternalDependencies": "patch"
}updateInternalDependencies: "patch"가 중요합니다. @mirage-engine/painter를
올리면 이를 의존하는 @mirage-engine/core와 mirage-engine이 자동으로 패치
범프됩니다. 트리 깊은 곳의 수정 하나가 알아서 바깥으로 전파됩니다.
access: "public"은 필수입니다 — 스코프 패키지는 npm에서 기본이 restricted
입니다.
changeset 작성
pnpm changeset요약은 그대로 changelog에 실리므로 사용자를 위해 쓰세요.
---
"@mirage-engine/core": minor
"mirage-engine": minor
---
Add `canvasSize` option to control whether the overlay canvas is allocated at
viewport size or full document height.좋은 요약은 옵션이나 동작의 이름을 밝히고 무엇을 하는지 말합니다. "버그 수정", "로직 업데이트" 같은 건 피하세요.
changeset 하나로 여러 패키지를 올릴 수 있습니다. core와 painter에 걸친 변경이라면 둘 다 고르세요 — 한쪽만 올리면 아직 배포되지 않은 painter에 의존하는 core 버전이 나갑니다.
버전 정책
| 범프 | 의미 |
|---|---|
patch | 버그 수정, API 변경 없음 |
minor | 추가: 새 옵션, 속성, export |
major | 파괴적: 제거, 이름 변경, 기본값 변경 |
@mirage-engine/painter(1.x)를 빼면 모두 1.0 이전입니다. changeset 설정의
fixed와 linked가 모두 비어 있어 패키지별로 독립적으로 버저닝됩니다.
수동 릴리스
자동화가 망가졌을 때만.
대기 중인 changeset 적용
pnpm changeset versionpackage.json 버전을 올리고 CHANGELOG.md를 갱신합니다.
빌드
pnpm -r build배포
pnpm changeset publishnpm에 아직 없는 버전의 패키지만 배포하고 git 태그를 만듭니다.
태그 푸시
git push --follow-tagspackages/mirage-engine에는 재빌드하는 prepublishOnly 훅이 있습니다.
나머지 패키지는 오래된 dist가 배포될 수 있으니 항상 pnpm -r build를 먼저
실행하세요.
문서 배포
apps/docs는 Vercel의 Next.js 앱이며, npm 릴리스와 무관하게 main 푸시마다
배포됩니다. 문서 수정은 버전 범프 없이 나갑니다.
릴리스 체크리스트
- 로컬에서
pnpm -r build통과 - 영향받는 모든 패키지를 포함한 changeset 추가
- 파괴적 변경은
major로 표시하고 요약에 설명 - API 변경이라면 두 로케일 모두 문서 갱신
-
apps/dev샌드박스가 여전히 실행됨 - 공개 API가 바뀌었다면 루트
README.md갱신