Semantic Versioning (SemVer) 사용: MAJOR.MINOR.PATCH
1.0.0
│ │ │
│ │ └─ Patch: 버그 수정, 작은 개선
│ └─── Minor: 새 기능 추가 (하위 호환)
└───── Major: 큰 변경, 하위 호환성 깨짐
버전을 올려야 하는 경우:
- ✅ API 구조가 완전히 바뀜
- ✅ 데이터 형식이 변경되어 이전 버전과 호환 안 됨
- ✅ 주요 기능이 제거됨
- ✅ 사용자 경험이 크게 바뀜 (UI/UX 대폭 변경)
예시:
1.0.0 → 2.0.0
- 설문 생성 방식이 완전히 바뀜
- 저장된 데이터 형식이 변경됨
- 주요 기능이 제거됨
버전을 올려야 하는 경우:
- ✅ 새로운 기능 추가 (하위 호환)
- ✅ 새로운 질문 타입 추가
- ✅ 새로운 설정 옵션 추가
- ✅ 성능 개선 (기능 추가 없이)
예시:
1.0.0 → 1.1.0
- 객관식 질문 타입 추가
- 설문 미리보기 기능 추가
- 다국어 지원 추가
- 성능 최적화
버전을 올려야 하는 경우:
- ✅ 버그 수정
- ✅ UI 텍스트 수정
- ✅ 스타일링 개선 (기능 변경 없음)
- ✅ 타입 오류 수정
- ✅ 접근성 개선
예시:
1.0.0 → 1.0.1
- 버튼 클릭 안 되는 버그 수정
- 오타 수정
- 색상 대비 개선
- 타입 에러 수정
# 변경된 파일 확인
git status
git diff- Major? → 큰 변경사항 있나?
- Minor? → 새 기능 추가했나?
- Patch? → 버그만 수정했나?
{
"version": "1.0.1" // 적절한 버전으로 변경
}git add package.json
git commit -m "chore: bump version to 1.0.1"
git push origin main- CI가 자동으로 Release 생성
- GitHub Releases에서 확인
현재: 1.0.0
변경: 버튼 색상 오류 수정
결과: 1.0.0 → 1.0.1 ✅
현재: 1.0.1
변경: 주관식 질문 타입 추가
결과: 1.0.1 → 1.1.0 ✅
현재: 1.1.0
변경: 설문 저장 형식 완전히 변경
결과: 1.1.0 → 2.0.0 ✅
현재: 1.0.0
변경:
- 새 기능 추가 (객관식)
- 버그 수정 (버튼 클릭)
결과: 1.0.0 → 1.1.0 ✅ (Minor가 우선)
- 같은 버전으로 여러 번 Release (버전 충돌)
- 버전을 낮추기 (1.0.1 → 1.0.0)
- 버전 건너뛰기 (1.0.0 → 1.2.0, 1.1.0 건너뛰기)
- 작은 변경도 버전 올리기 (1.0.0 → 1.0.1)
- 커밋 메시지에 버전 명시 (
chore: bump version to 1.0.1) - 릴리즈 노트 작성 (선택사항, CI가 자동 생성)
Release 전에 확인:
- 변경사항이 Major인가? → X.0.0
- 변경사항이 Minor인가? → 0.X.0
- 변경사항이 Patch인가? → 0.0.X
- package.json 버전 업데이트
- 커밋 메시지에 버전 명시
- main 브랜치에 머지
- GitHub Releases 확인
v2.0.0 (2025-01-22) - 설문 저장 형식 변경
v1.2.0 (2025-01-20) - 주관식 질문 타입 추가
v1.1.1 (2025-01-19) - 버그 수정
v1.1.0 (2025-01-18) - 객관식 질문 타입 추가
v1.0.2 (2025-01-17) - UI 개선
v1.0.1 (2025-01-16) - 버그 수정
v1.0.0 (2025-01-15) - 첫 정식 릴리즈
- "이전 버전과 호환 안 되나?" → Major
- "새 기능 추가했나?" → Minor
- "버그만 수정했나?" → Patch
npm version patch- Patch 버전 자동 증가npm version minor- Minor 버전 자동 증가npm version major- Major 버전 자동 증가
하지만 수동으로 package.json 수정하는 것도 충분히 좋습니다!
간단하게:
- 🐛 버그 수정 → Patch (1.0.0 → 1.0.1)
- ✨ 새 기능 → Minor (1.0.0 → 1.1.0)
- 🔥 큰 변경 → Major (1.0.0 → 2.0.0)
현재 버전: 1.0.0 ✅