이전 글에서 package.json 파일의 각 필드를 다시 살펴보면..
{
"dependencies": {
"date-fns": "^4.1.0"
},
"type": "module",
"scripts": {
"start": "node main.js",
"test": "node test.js"
}
}
dependencies 필드의 4.1.0 이라는 것을 Semantic Version (시멘틱 버전)이라고 하는데
정확히 무슨 의미인지 알아보자.
Semantic Version
우리말로 해석하면 '의미론적 버전' 이라고 볼 수 있는데
시멘틱 버전은 위 코드에 보이는 것처럼 세 개의 숫자로 이루어진 버전이다.
이떄 이것을 x.y.z 형태로 구성되는데
X를 메이저 버전(major)
Y를 마이너 버전(minor)
Z를 패치 버전(patch) 이라고 한다.
무조건 음이 아닌 정수로 표현되며
쉽게 표현하면 X는 주요한 버전, Y는 작은 버전, Z는 패치 버전이다.
▶ 메이저 버전 (X)
- 코드에 정말 큰 변화가 있어서 이전 버전과 호환이 안될 때 업데이트
기존에 있던 기능을 지우거나 동작 방식을 완전히 바꿔서 기존에 쓴 코드가 오류가 난다면
메이저 버전을 업데이트 해야 하는 것이다.
그래서 만약 자신이 사용하던 패키지의 메이저 버전이 업데이트 되었다면
딱히 좋은 소식은 아니라는 것이다.
왜냐하면 그 패키지를 이전 버전 패키지와 비교해서
어떤 부분들이 바뀐 건지를 체크하고 그 코드를 수정해야 할 가능성이 매우 높기 때문이다.
(ex : 2.12.3 -> 3.0.0)
▶ 마이너 버전 (Y)
- 기존 코드에 영향을 주지않는 어떤 새로운 기능이 추가 됐을 때 업데이트
예를 들면 새로운 함수가 추가한다면 새로운 버전을 사용하는 사람들은
이 함수를 사용할 수 있고 기존에 작성한 코드도 그대로 작동 되는 것을 뜻한다.
(ex : 2.12.3 -> 2.13.0)
▶ 패치 버전 (Z)
- 버그 수정이나 코드의 효율성을 높이는 경우 업데이트
말 그대로 버그 수정, 코드의 효율성 등
기존 코드에 전혀 영향을 주지 않는 변화가 있을 때 변경되는 버전이다.
(ex : 2.12.3 -> 2.12.4)
▶ 캐럿 기호 ( ^ )
- 시멘틱 버전 앞의 캐럿 기호 ( ^ )는 가장 왼쪽의 0이 아닌 버전이 바뀌지 않는 선에서의 버전 업데이트
쉽게 말하자면 ^2.13.3의 경우 메이저 버전 (2)만 바뀌지 않으면 된다는 뜻이다.
패키지 버전에 대한 정보는 npm이 알아서 관리해주기 때문에 직접 작성하는 경우는 드물어 걱정할 필요는 없다.
'JS' 카테고리의 다른 글
(9) JavaScript Module - 유용한 npm 커맨드 (0) | 2024.12.26 |
---|---|
(8) JavaScript Module - package-lock.json (0) | 2024.12.25 |
(6) JavaScript Module - package.json (0) | 2024.12.25 |
(5) JavaScript Module - npm, 서드파티 모듈 (0) | 2024.12.24 |
(4) JavaScript Module - named export, default export (0) | 2024.12.24 |