[Node.js 기여] semver 라벨

정하람·2025년 7월 29일

OSS-Contribution

목록 보기
3/7
post-thumbnail

개요

이전 기여에서 semver-minor 라벨이 붙었는데 무슨 뜻인지 몰라서 찾아보게 되었다가 다른 버전 관련 라벨들도 같이 정리해봤다.

SemVer 는 체계적인 버전 관리를 위한 규칙이다. Node.js 는 이를 따른다.

MAJOR.MINOR.PATCH

ex. v22.4.1

MAJOR: 주 버전 (Major version)

  • API와 호환되지 않는 변경 사항이 생길 때 증가

  • 주 버전을 변경하면 기존 사용자가 코드를 수정하지 않고는 업데이트를 할 수 없습니다.

MINOR: 부 버전 (Minor version)

  • 기존 API와 호환되는 새로운 기능이 추가될 때 증가

  • 부 버전을 변경하면 기존 사용자가 새로운 기능을 사용할 수 있게 됩니다.

PATCH: 패치 버전 (Patch version)

  • 기존 API와 호환되는 버그 수정이나 소규모 변경이 있을 때 증가

  • 패치 버전을 변경하면 기존 사용자가 버그 수정 및 성능 개선을 받을 수 있습니다.



Node.js 기여 시 알아야 할 Semver 라벨

1. semver-major

  • 의미: 기존 코드와 호환이 깨지는 변화 (breaking change)
  • 예시: API 제거, 기본 동작 변경, 예외 발생 방식 변경
  • 버전 변화: v20.x → v21.0.0 (major 버전 +1)
  • 실전 팁:
    • 반드시 커밋 메시지에 BREAKING CHANGE: 포함해야 함
    • 어떤 상황에서 깨지는지, 왜 바꾸는지 설명 필요
    • 메이저 릴리스가 될 때까지 보류되므로 반영까지 시간이 오래 걸릴 수 있음

2. semver-minor

  • 의미: 기능이 추가되었지만 기존 기능과는 호환됨
  • 예시: 새 옵션 추가, 새로운 CLI 인자, 새로운 API 함수 추가
  • 버전 변화: v20.4.0 → v20.5.0 (minor 버전 +1)
  • 실전 팁:
    • 기존 코드 안 깨지게 해야 함
    • 문서 (doc/api/*.md)도 꼭 같이 업데이트
    • 보통 이런 PR은 릴리스 사이클 안에서 빠르게 반영

3. semver-patch

  • 버그 수정, 리팩토링, 성능 개선 등 (새 기능 아님)
  • v20.4.1 → v20.4.2 같이 patch-level 버전에 포함됨
  • 예: 누락된 경고 메시지 추가, 옵션 기본값 오류 수정 등

4. dont-land-on-vXX.x

  • 특정 버전 브랜치(v20.x, v18.x 등)에는 백포트되지 않아야 함을 표시
  • 예: 새 기능이므로 LTS 브랜치에는 적용하지 않음
  • 반대 라벨: backport-requested-v18.x 같은 것

5. backport-requested-vXX.x

  • 특정 버전 브랜치에 수동 백포트 요청
  • 예: backport-requested-v18.xv18.x 브랜치에도 반영되게 요청

🙋‍♀️ 기여자가 직접 이 라벨을 붙일 필요는 없음. Node.js Collaborator가 판단해서 붙입니다.



라벨이 왜 중요한가?

  • PR에 어떤 semver-* 라벨이 붙는지는 Node.js 릴리스 주기와 직접 연결됨
  • 라벨에 따라 PR 병합 시점, 우선순위, 리뷰 속도도 달라짐
  • semver-minor는 빠르게 머지될 수 있지만 semver-major는 전체 릴리스 계획 안에서만 병합 가능

정리

내가 추가한 --cpu-prof-name placeholder 기능은 새로운 함수만 도입했고 기존 기능과는 호환되기 때문에 minor 버전 +1 으로 반영된다.

0개의 댓글