노드를 공부하다가 그동안 그렇구나하고 넘겼던 버전 넘버링이 어떤 기준으로 작성되는지 궁금해져서 이번에 정리해보았습니다!
바로 본론으로 넘어가면 다들 인터넷에서 여러 프로그램을 다운받으려고 할 때 아래 사진처럼 버전이 적혀있는걸 다들 보셨을겁니다.
언제는 1.1.1에서 1.1.2 정도로 맨 마지막 숫자만 오르고 어느 떄는 2.0.0으로 아예 앞 숫자가 바뀌는데 여기에도 다 의미가 있다는 점 다들 알고계시나요?? 이렇게 패키지나 실행파일의 버전을 3가지의 숫자로 나타낸 것을 semVer (semantic Versioning, 유의적 버전)이라고 합니다.
1. SemVer
semVer의 의미는 버전을 구성하는 세자리가 모두 의미를 가지고 있음을 뜻으로 버전을 나타내는 3개의 숫자는 각각 맨 앞의 숫자는 major 버전, 중간 숫자는 minor 버전, 마지막 숫자는 patch 버전을 의미합니다. 예를 들어 버전이 2.1.5라면 major 버전은 2, minor 버전은 1, patch버전은 5입니다. 각 버전을 정리하면 다음과 같습니다.
1.1. 버전 종류
1.1.1. Major 버전
: 하위 호환이 안 될 정도로 패키지의 내용이 수정되었을 때 올라가는 버전
- 0일 경우 초기 개발 중이라는 의미
- 1부터 정식 버전을 의미
- 1.3.0 버전의 패키지를 사용하던 사람이 2.0.0으로 업데이트를 할 경우 에러가 발생할 확률이 높다.
1.1.2. Minor 버전
: 하휘 호환이 되는 기능 업데이트를 할 때 올라가는 버전
- 1.3.0 버전의 패키지를 사용하던 사람이 1.4.0 버전으로 업데이트를 하더라도 문제가 발생하지 않아야한다.
1.1.3. Patch버전
: 기존 기능에 문제가 있어 수정할 경우 올라가는 버전
- 새로운 기능의 추가보다는 문제 수정의 초점 (ex. 간단한 버그 수정)
- 1.3.0 버전의 패키지를 사용하던 사람이 1.3.1 버전으로 업데이트를 하더라도 문제가 발생하지 않아야한다.
1.2. 특징
1.2.1 장점
- 의존 관계에 도움이 된다.
-> 배포된 버전 내용이 변경되지 않아 패키지 간 의존관계에 도움이 된다.
-> 특정 버전이 정상적으로 동작하면 같은 minor나 patch 버전을 사용할 경우 정상적으로 동작할 것이라 믿을 수 있다.
- 버전만 보고 에러 발생 여부를 가늠할 수 있다.
-> major 버전이 업데이트 되었을 시 기존 버전과 호환되지 않을 확률이 큼을 빠르게 인지하여 주의를 기울일수 있다.
1.2.2. 유의할점
- 새 버전을 배포한 후에는 해당 버전의 내용을 수정해서는 안된다.
-> 수정할 내용이 생기면 변경된 내용에 맞춰 새로운 버전을 배포해야한다.
1.3. semVer와 함께 사용되는 기호
세자리 버전 외에도 버전 앞에 ^나 ~ 또는 <,>같은 문자가 함께 적혀있는 경우도 있습니다. 이 문자들은 버전에 포함되는 것은 아니나 설치나 업데이트 시 어떤 버전을 설치해야하는지 알려주는 역할을 합니다.
1.3.1. ^
: minor 버전까지만 설치하거나 업데이트해야하는 경우
- 가장 많이 보이는 기호
- npm i express@^1.1.1 의 경우
-> 1.1.1 ~ 2.0.0 미만의 버전까지 설치 가능을 의미.
-> 1.x.x 로 사용되기도 함.
1.3.2. ~
: patch 버전까지만 설치하거나 업데이트해야하는 경우
- ~보단 덜 사용됨.
-> minor버전까지는 하위호환이 보장되기 떄문에 patch 버전까지만 따로 업데이트를 권장하는 경우가 드물다.
- npm i express@~1.1.1 의 경우
-> 1.1.1 ~ 1.2.0 미만의 버전까지 설치 가능을 의미
-> 1.1.x 로 사용되기도 함.
1.3.3. < , <=
: 해당버전 미만/이하의 버전만 설치하거나 업데이트해야하는 경우
- npm i express@>1.1.1 / npm i express@>=1.1.1 의 경우
-> 1.1.1 미만/이하의 버전만 설치 가능을 의미
1.3.4. >, >=
: 해당버전 초과/이상의 버전만 설치하거나 업데이트해야하는 경우
- npm i express@<1.1.1 / npm i express@<=1.1.1 의 경우
-> 1.1.1 초과/이상의 버전만 설치 가능을 의미
1.3.5. =
: 해당버전만 설치하거나 업데이트해야하는 경우
- npm i express@=1.1.1
-> 1.1.1 버전만 설치 가능을 의미
1.3.6. @latest
: 안정된 최신버전의 패키지를 설치하거나 업데이트해야하는 경우
- npm i express@latest
-> npm i express@x라고 표현하기도 함.
1.3.7. @next
: 가장 최신 배포판을 사용할 수 있는 경우
- 안정되지 않은 알파나 베타 버전의 패키지를 설치할 수 있음.
- 알파버전의 표시
-> 1.1.1-alpha.0
- 베타버전의 표시
-> 1.1.1-beta.1
- 출시 직전의 패키지 표시 (release candidate를 의미)
-> 1.1.1-rc.0
'개발지식 > CS' 카테고리의 다른 글
[알고리즘지식] 해시, 해시충돌 그리고 해결법 (0) | 2021.06.12 |
---|