일.포맷
버전 번호는 MAJOR.MINOR.PATCH. 점은 구분자:
-
MAJOR. 호환되지 않는 API 변경을 수행
-
MINOR. 하위 호환되는 새 기능을 추가
-
PATCH. 하위 호환되는 버그 수정을 수행
따라서, 일반적으로 의존 package 의 메이저 버전 (MAJOR) 은 업데이트하지 않음
이.범위
의존 관계 관리에 사용. 타겟 package 버전 범위를 선언하고, 의존 관계의 자동 업데이트를 지원
-
* | x | X
사용 가능한 임의의 버전을 수락. 디폴트로 최신을 취득. 사용하지 말 것. 메이저 버전 업데이트는 버그를 일으킬 수 있음
-
MAJOR | MAJOR.MINOR
각각
<m+1과<m.n+1을 나타냄.\*또는x(m.x.x | m.n.*) 로도 동일한 범위를 표현 가능 -
-, <, <=, > 와 >=
m.n.p - M.N.P는>=m.n.pかつ<=M.N.P를 나타냄 -
~
~m.n.p는>=m.n.pかつ<m.n+1.0를 나타냄 -
^
^m.n.p는>=m.n.pかつ<m+1.0.0를 나타냄 -
0.n.p
메이저 버전 번호가 0 은 초기 개발 단계에 있음을 나타냄. 모든 것이 언제든지 변동될 수 있음. MINOR 와 PATCH 는 의미가 없음.此时*^ 프리픽스는 무효*.
^0.n.p는0.n.p와 동치. ~ 프리픽스는 여전히 유효
삼.주의 사항
의미적 버전 관리는개발 환경에서만 사용. 즉, 의미적 버전 관리가 버그를 프로덕션 환경에 도입하는 것을 걱정해야 한다면, 사용 방법이 잘못되었음을 나타냄.
개발 환경에서만 사용하는 구체적인 방법은 다음과 같음:
-
package.json 의 "bundledDependencies" 로 의존 관계를 패키징
-
npm shrinkwrap명령으로 특정 시점의 의존 계층 구조 스냅샷을 생성 -
의존 관계를 응용과 함께 버전 관리 (git 등) 에 추가
사.테스트 버전에 대하여
Alpha, Beta, Gamma 는 α, β, λ 와 동음. 그리스 문자의 첫 3 글자. 소프트웨어 개발 프로세스 중 테스트의 3 개 단계를 나타냄:
-
Alpha
내부 테스트 버전. 내부 교류 또는 전문 테스트 인원의 테스트용
-
Beta
공개 테스트 버전. 전문 애호가가 대규모로 테스트용. 몇 가지 결함이 존재. 이 버전은 일반 사용자의 설치에 적합하지 않음
-
Gamma
비교적 성숙한 테스트 버전. 곧 출시될 정식 버전과 거의 다르지 않음
-
RC
Release Candidate 의 약자. 릴리스 카운트다운을 의미. 후보 버전. Gamma 단계에 위치. 이 버전은 모든 기능을 완료하고 대부분의 BUG 를 클리어. 이 단계가 되면 BUG 를 제거할 뿐, 소프트웨어에 큰 변경을 가하지 않음. Alpha 에서 Beta 에서 Gamma 는 개선의 선후 관계. 그러나 RC1, RC2 는 흔히取舍 관계
-
Stable
안정 버전. 오픈소스 소프트웨어에는 모두 stable 버전이 있음. 이것이 오픈소스 소프트웨어의 안정 발행판(Node 에 대해서는 이렇지 않음. 상세는 [Windows/Linux 下 Node 更新](/articles/windowslinux 下 node 更新/) 참조)
범위 >1.2.3-alpha.3 에 대해, 버전 1.2.3-alpha.7 은 조건에 합치. 그러나 3.4.5-alpha.9 는 조건을 만족하지 않음. 3.4.5-alpha.9 는 실제로 1.2.3-alpha.3 보다 크지만, SemVer 의 소트 룰에 따르면, 이 버전 범위는 1.2.3 의 테스트 버전만 수락하고, 다른 버전의 테스트 버전은 수락하지 않음. 물론 3.4.5 는 조건을 만족. 테스트 버전이 아니며, 1.2.3-alpha.7 보다 크기 때문
이렇게 하는 목적은 2 개 있음. 먼저 테스트 버전은 빈번히 업데이트되며, 공개에 적합하지 않은 중대한 변경을 포함할 수 있음. 따라서 범위에서 제외됨. 더욱이, 사용자가 명확히 리스크 있는 테스트 버전을 사용한다고 지정해도, 다음 버전의 테스트 버전이 포함되는 것은 여전히 부적절
오.정리
고정 버전 번호의 의존 관계를 사용하지 않음. 패치 (PATCH) 업데이트는 기존 버그를 수정할 수 있음. 일반적으로 3 종류 있음:
-
신��하게 의존 버전을 제어:
^프리픽스를 사용. 패치 버전만 업데이트. 메이저 버전과 마이너 버전은 추종하지 않음. 업데이트가 빈번하지 않은 안정 경향의 프로젝트에 적합 (should 등) -
조금 느슨하게:
~프리픽스를 사용. 메이저 버전은 추종하지 않음. 마이너 버전과 패치만 업데이트. 장기에 빈번히 업데이트 되는 대 프로젝트에 적합 (express 등) -
가장 느슨하게:
*프리픽스를 사용. 최신 버전을 취득. 개인의 소 프로젝트, 실험적인 프로젝트에 적합 (myproj 등)
아직 댓글이 없습니다