시멘틱 버전(semantic versioning)
- 시멘틱 버저닝 이란 패키지의 일반적인 버전의 표현 방식을 이야기한다.
- 숫자 3자리로 버전을 표현한다.
- 이를테면 노드의
package.json
에서는"react":"16.8.6"
와 같이 리액트 버전 표기가 가능하다. .
으로 구분된 3개의 숫자는 각각의 숫자마다 의미를 갖고 있다.
첫번째 숫자, Major Digit (16
.8.6)
- 첫번째 숫자는 이전 버전들과의 호환성을 나타낸다. 이번 업데이트에 이전 버전과 호환되지 않는 큰 변화가 있었다면, major digit이라 불리는 가장 앞의 숫자를 올린다.
- 이를테면 1.0.1 버전을 업데이트해서 더이상 이전 버전과 호환되지 않으면 2.0.1 버전이 된다.
두번째 숫자, Minor Digit (16.8
.6)
- 두번째 숫자는 이번 업데이트에 새로운 기능이 추가됐을 때 올려준다. 단, 위와 다르게 이전 버전과 호환되는 새로운 기능이 추가되었을 때 올려준다. minor digit이라 불린다.
- 1.0.1에서 호환 가능한 새로운 기능을 추가하면 1.1.1이 되는 식이다.
세번째 숫자, Patch Digit (16.8.6
)
- 세번째 숫자는 이번 업데이트에 간단한 버그 패치가 있었을 경우에 올려준다. patch digit이라 불리는 숫자를 올려준다.
- 새로운 기능의 추가가 아닌 간단하게 버그만 패치 했다면 1.0.1에서 1.0.2가 된다.
+ package.json
의 ^
기호와 ~
기호
package.json
에는 dependencies 버전 앞 ^
기호와 ~
기호가 있는데 이에 대해서도 알아보자.
여기서는
^
기호가 쓰였다.
여기서는
~
기호가 쓰였다.
저 기호들은 버전 앞에 붙이는 접두사(prefix)라고 볼 수 있다. 프로젝트 내부 dependency의 버전을 제한할 것인지 여부를 나타내는 기호이다. 앱의 안정성이 중요하다면, 보수적으로 설정하는 것이 좋다.
^
기호와 ~
기호가 시멘틱 버전에서 갖는 의미
prefix 인 ^
기호나 ~
기호가 없고 버전만 명시되어 있다면 정확하게 일치하는 버전의 의존성을 사용하게 된다.
하지만 ^
기호나 ~
기호가 있다면 정확하게 일치하는 버전을 사용하기보다 제한된 버전 내에서 최신 버전을 사용하게 된다.
참고로 알아두시면 좋은 것은
--save
옵션을 이용하여 디펜던시를 추가했을 때는 자동으로^
기호가 붙는다.
^
기호가 의존성 버전 앞에 쓰여졌을 때- minor digit 기준으로 최신 패키지를 사용한다.
- 호환 가능한 최신 기능의 버전으로 업데이트 한다.
^16.8.6
의 버전을 기준으로16.*.*
의 버전을 가져올 수 있다.17.
으로 시작하는 버전을 가져오는 것은 불가능하다.
~
기호가 의존성 버전 앞에 쓰여졌을 때- patch digit 기준으로 최신 패키지를 사용한다.
- 버그가 픽스된 최신 버전으로 업데이트한다.
~16.8.6
의 버전을 기준으로 하면16.8.*
의 버전을 가져올 수 있다고 생각하면 된다.
개인적으로는 프로덕션 앱이라면 prefix 기능 자체를 굳이 사용하지 않는 것을 추천한다.
'용어 (개발용어)' 카테고리의 다른 글
UTF (Unicode Transformation Format) 인코딩이란? (0) | 2023.03.10 |
---|---|
이스케이프 시퀀스 (Escape Sequence) 란? (0) | 2023.03.10 |
루프백 아이피 (loopback ip) 란? (0) | 2022.11.05 |
커멘드 라인 표기법 (Command Line Notation) 이란? (0) | 2022.10.29 |
샤딩 (Sharding) 이란? (0) | 2022.06.30 |