GitHub Release 가이드
Git tag와 GitHub Release는 npm에 공개한 package의 source identity와 사용자용 변경 기록을 남긴다. npm publish를 대신하지 않으며, registry 검증이 끝난 뒤 별도 단계로 수행한다.
현재 baseline
2026-08-14 KST 기준 npm package, 원격 annotated tag와 두 GitHub Release를 공개했다. 두 Release는 Pre-release이며 Latest release가 아니다.
| package | npm version | source commit | GitHub Release | 공개 시각 |
|---|---|---|---|---|
@browse-sent-event/core | 0.1.0-alpha.1 | 0e3f9dd | Pre-release 공개 완료 | 2026-08-14 00:28:54 KST |
@browse-sent-event/plugin-vite | 0.1.0-alpha.2 | 0e3f9dd | Pre-release 공개 완료 | 2026-08-14 00:28:56 KST |
두 원격 tag는 모두 source commit 0e3f9dd를 가리킨다. GitHub의 publishedAt은 각각 2026-08-13T15:28:54Z, 2026-08-13T15:28:56Z다.
@browse-sent-event/plugin-vite@0.1.0-alpha.0은 잘못 배포된 deprecated version이므로 정상 tag와 release를 만들지 않는다.
원칙
- tag 형식은
<package-name>@<exact-version>이다. - tag는 npm tarball을 만든 source commit을 가리키며 이동시키지 않는다.
- alpha GitHub Release는 prerelease로 표시하고 Latest release로 지정하지 않는다.
- tag와 release 생성은 maintainer가 직접 승인하고 실행한다.
- release note에는 설치 명령, package 역할, 알려진 제한과 검증 결과를 포함한다.
1. npm identity 재확인
npm view @browse-sent-event/core@0.1.0-alpha.1 version dist.integrity --json
npm view @browse-sent-event/plugin-vite@0.1.0-alpha.2 version dependencies dist.integrity --jsonplugin-vite의 공개 dependency가 "@browse-sent-event/core": "0.1.0-alpha.1"인지 확인한다. workspace:*가 보이면 tag와 release 생성을 중단한다.
2. source commit 확인
tag를 만들기 전에 해당 commit의 package manifest가 npm version과 일치하는지 확인한다.
git show 0e3f9dd:packages/core/package.json
git show 0e3f9dd:packages/plugin-vite/package.json두 package의 최종 후보와 package README가 함께 병합된 PR #20의 merge commit을 source identity로 사용한다. 후속 version에서는 release PR과 registry 기록으로 source commit을 새로 확정한다. 현재 baseline commit을 관성적으로 재사용하지 않는다.
3. annotated tag 생성과 push
git tag -a "@browse-sent-event/core@0.1.0-alpha.1" 0e3f9dd \
-m "@browse-sent-event/core 0.1.0-alpha.1"
git tag -a "@browse-sent-event/plugin-vite@0.1.0-alpha.2" 0e3f9dd \
-m "@browse-sent-event/plugin-vite 0.1.0-alpha.2"
git push origin "@browse-sent-event/core@0.1.0-alpha.1"
git push origin "@browse-sent-event/plugin-vite@0.1.0-alpha.2"remote tag가 이미 있으면 새로 만들거나 강제로 덮어쓰지 않는다. commit과 version을 비교하고 불일치 원인을 먼저 조사한다.
4. draft prerelease 작성
release note를 검토할 수 있도록 먼저 draft로 만든다.
gh release create "@browse-sent-event/core@0.1.0-alpha.1" \
--verify-tag \
--draft \
--prerelease \
--latest=false \
--title "@browse-sent-event/core 0.1.0-alpha.1"
gh release create "@browse-sent-event/plugin-vite@0.1.0-alpha.2" \
--verify-tag \
--draft \
--prerelease \
--latest=false \
--title "@browse-sent-event/plugin-vite 0.1.0-alpha.2"각 release note에는 최소 다음 내용을 적는다.
pnpm add -D <package>@alpha설치 명령- package가 제공하는 기능
- Vite 개발 서버와 main thread라는 현재 범위
- 해당 exact version의 custom hotkey,
excludeUrls, plugin option 전달과 그 밖의 알려진 alpha 제한 - build, test, tarball, registry smoke와 audit 결과
- plugin-vite alpha.0을 사용하지 말아야 한다는 경고
5. 검토 후 publish
GitHub UI 또는 다음 명령으로 draft를 확인한다.
gh release view "@browse-sent-event/core@0.1.0-alpha.1"
gh release view "@browse-sent-event/plugin-vite@0.1.0-alpha.2"내용과 tag target이 맞으면 maintainer가 publish한다.
gh release edit "@browse-sent-event/core@0.1.0-alpha.1" --draft=false
gh release edit "@browse-sent-event/plugin-vite@0.1.0-alpha.2" --draft=falsepublish 후 두 release가 prerelease이고 Latest가 아닌지 확인한다.
차단 조건
다음 중 하나라도 해당하면 tag 또는 release를 만들지 않는다.
- npm registry의 exact version과 source manifest가 다르다.
- plugin-vite dependency에
workspace:*가 남아 있다. - tag가 이미 다른 commit을 가리킨다.
- npm publish 후 소비자 설치와 ESM import 검증을 통과하지 못했다.
- maintainer가 tag와 release 생성을 승인하지 않았다.
- deprecated된 문제 version에 정상 release identity를 부여하려 한다.