본문 바로가기
NodeJS/이론

유의적 버전 (Semantic Versioning == SemVer)

by Hwanii_ 2023. 10. 29.
728x90

Semantic

 

단어 뜻은 유의미한 == 의미있는 == 유의적인 이다.

 

말 그대로 의미가 있는 버전이라는 것이다.

 

프로젝트가 개발되는 특정한 시점의 어떠한 상태에 의미를 부여 해서 숫자를 매기는 방법을 의미 한다.

 

버전 예시)

 

 

 

버전은 . 을 기준으로 나뉘어서 구성 되어 있는데, 이것은 아래와 같다.

 

 

 

Major.Minor.Patch

 

20.9.0 버전을 예시로 한다면,

 

 

 

Major 버전 : 기존 버전과 호환 되지 않는 새로운 버전.

 

즉, 기존 버전은 19 버전을 의미 한다.

 

프로젝트에 큰 변경 사항이 발생 하면 이렇게 Major 숫자가 올라 가게 된다.

 

 

 

Minor 버전 : 기존 버전과 호환 되는 기능이 추가 된 버전.

 

즉, 20 버전에 새로운 기능이 추가된것을 의미 한다.

 

기존 상태와 호환이 가능하므로, Major 숫자는 수정 하지 않고, Minor 숫자만 한 단계 올려 준다.

 

예) 20.10.0

 

 

 

Patch 버전 : 기존 버전과 호환 되는 버그 및 오타 등이 수정된 버전.

 

즉, 20 버전에 잔잔한 버그 및 오타를 수정한 것을 의미 한다.

 

기존 상태에 별다른 기능이 추가 되지는 않았으므로, Patch 숫자만 올려주게 된다.

 

예) 20.9.1

 

 

 

캐럿 기호 ( == Caret == ^ )

 

 

Major 버전 앞에 ^ 을 확인 할 수 있다.

 

이러한 ^ 기호를 캐럿 기호 라고 부른다.

 

이러한 캐럿 기호는 유의적 버전과 같이 사용될 때 어떠한 의미를 가지는데, 아래와 같다.

 

^Major.Minor.Patch

 

^4.17.21

 

== Major 버전 내부에서 가장 최신 버전으로 업데이트 가능.

 

즉, Major 숫자인, 4 버전은 변동 되지 않고, Minor 숫자 또는 Patch 숫자가 변동 된다는 것이다.

 

설치한 패키지 (모듈 == 라이브러리) 의 버전 정보를 확인 하고 싶으면 아래와 같이 작성 하면 된다.

 

 

npm info 패키지명

 

으로 작성 하면, 이것저것 정보들이 콘솔창에 출력 된다.

 

 

 

현재 lodash 모듈의 최신 버전은 4.17.21 인데, 만약에 다른 버전을 설치 하고 싶으면 어떻게 해야 할까 ?

 

 

npm install 패키지명@Major.Minor.Patch

 

와 같이 작성 한다.

 

설치하려는 모듈명 바로 뒤에 @ 을 붙히고, 버전을 명시해준다.

 

 

그러면 위와 같이 changed ~~~ 하면서 정보가 출력 된다.

 

그리고, 다시 package.json 파일을 확인해보자.

 

 

그러면 캐럿표시 뒤에 Major 숫자인 4 는 그대로 유지 되어 있고, 내가 명시한 버전으로 숫자가 변경된것을 볼 수 있다.

 

 

 

update 라는 명령도 사용이 가능 하다.

 

npm update 패키지명 으로 작성 한다.

 

 

그러면 메이저 버전 안에서 최신으로 업데이트가 진행 된다.

 

 

 

만약에 ^ (캐럿 기호) 가 없으면 어떻게 될까 ? 확인해보자.

 

 

npm install lodash@4.17.19 명령어를 입력 해서, 다시 4.17.19 버전으로 내리고, 

 

 

npm update lodash 명령어를 입력 해도,

 

 

버전이 변경 되지 않는것을 확인 할 수 있다.

 

정리하자면, 캐럿 기호 ( ^ ) 를 명시해줌으로써, Major 버전 내부에서 언제든지 버전을 왔다갔다 할 수 있게 되는것이다.

 

 

 

틸드 기호 ( == tilde == ~ )

 

~ 기호를 사용 하면, 캐럿 기호와 다르게 Minor 버전 내에서 가장 최신으로 업데이트가 가능하다는 의미를 지니게 된다.

 

즉, Major 버전도 건드리지 않고, Minor 버전도 건드리지 않고, 오로지 Patch 버전만 변경 한다는 것이다.

 

자주 사용 되지는 않는다.

반응형

'NodeJS > 이론' 카테고리의 다른 글

서버 (프로젝트) 실행 및 빌드 하기  (0) 2023.10.29
NPM (Node Package Manager)  (0) 2023.10.28
Node.js  (0) 2023.10.28