Engineering note · Node

node patch 버전이 두자리 넘어가며 생긴 로직 문제

2025년 08월 19일이현수
태그nodegithubgithub/actions

빌드 후 package.json 의 버전이 자기 멋대로 변경이 됐다. yarn 1.22 버전에서 sementic version 규칙을 따르면서 버전을 자체적으로 변경한 것.

yarn 과 npm 의 버전을 다루는 형태에 차이가 있었다.

Updated package.json version from 2.13.10.0 to: 2.13.10.0.08191009 npm_package_version 2.13.1-0.0.8191009

이상하게 하이픈이 들어가는 문제가 있었다. 처음에는 뒤에 날짜 정보를 붙이면서 버그가 발생한 줄 알았다. 하지만 yarn 의 버전 체계가 npm 과 달라서 생긴 문제라고 클로드는 설명했다.

yarn 의 주소체계

2.13.10.0+08191030 2.13.10.0.08191030 2.13.10.008191030 이 형태들 모두 3번째 버전에 하이픈이 들어간 버전( 2.13.1-0.12345 )으로 바뀌어버린다. 심지어 4번째 버전의 0은 패딩됨.

  • npm: 2.13.10.008191030  (그대로 유지)
  • yarn: 2.13.1-0.8191030 (하이픈으로 변환)

2.13.10.0-dev.08191030 -> 2.13.1-0.0-dev.8191030 2.13.10-dev.08191030 -> 2.13.10-dev.08191030 (동일)

Semantic Versioning 2.0.0

표준 형식: MAJOR.MINOR.PATCH[-PRERELEASE][+BUILD] 4자리 이상의 버전들은 모두 prerelease 로 변환해버린다.

yarn 의 patch 버전 처리 버그 (yarn 1.22.22)

입력 버전예상 결과실제 결과문제
2.13.10.0.81910302.13.10-0.81910302.13.1-0.0.8191030❌ patch가 10→1로 변경
2.13.10.81910302.13.10-81910302.13.1-0.8191030❌ patch가 10→1로 변경
2.13.11.0.81910302.13.11-0.81910302.13.1-1.0.8191030❌ patch가 11→1로 변경
Patch가 잘못됨: 10 → 1, 11 → 1
text
yarn set version stable

yarn 을 업데이트하는 방법도 있다.

Yarn 버전입력 버전결과상태
1.22.222.13.10.0.81910302.13.1-0.0.8191030❌ 버그
1.22.222.13.11.0.81910302.13.1-1.0.8191030❌ 버그
4.9.22.13.10.0.81910302.13.10.0.8191030✅ 정상
4.9.22.13.11.0.81910302.13.11.0.8191030✅ 정상
4.9.2 에서는 아예 하이픈을 넣지도 않고 있다.

!error Yarn 4.9.2 버전 사용하는 순간 에러가 해결되지 않음 Internal Error: project@workspace:.: This package doesn't seem to be present in your lockfile; run "yarn install" to update the lockfile 아무리 해결을 하려고 해도 yarn 4.9.2 버전을 사용할 때 문제가 발생한다.

좋아요와 댓글

댓글 남기기

댓글 0개

댓글을 불러오는 중입니다.