버전의 첫 번째 자리 0.x.x : major
버전의 첫 번째 자리는 메이저(major) 버전입니다. 메이저 버전이 0 이면 초기 개발 중이라는 뜻입니다. 1부터는 정식 버전을 의미합니다. 이는 보통 하위 호환이 안 될 가능성이 높은 패키지 업데이트가 되었을 때 올립니다. 즉, 1.0.0 에서 2.0.0 으로 메이저 버전을 올렸다는 것은 하위 버전과 호환이 안 될 가능성이 높다는 것을 의미합니다.
버전의 두 번째 자리 x.0.x : minor
두 번째 자리는 마이너(minor) 버전입니다. 마이너 버전은 하위 호환이 되는 기능 업데이트를 할 때 올립니다. 즉, 1.5.0 에서 1.6.0 으로 올릴 때 새로운 기능이 추가 되었지만, 하위 버전과 호환이 가능하다는 것을 의미합니다.
버전의 세 번째 자리 x.x.0 : patch
세 번째 자리는 패치(patch) 버전입니다. 새로운 기능이 추가되었다기보다는 기존 기능에 문제가 있어 수정한 것을 내놓았을 때 패치 버전을 올립니다. 즉, 에러가 오류 혹은 기타 문제 등을 발견하고, 이를 처리했다는 의미로서 올리는 것입니다.
이를 표로 간략하게 정리해보면 다음과 같습니다.
버전 | 의미 |
0.x.x | 초기 개발 중이며, 하위 호환성이 보장되지 않음 |
1.x.x 이상 | 정식 버전으로, 하위 호환성이 보장됨 |
x.0.x | 기능 업데이트로, 하위 호환성이 보장되며 에러가 없어야 함 |
x.x.0 | 기존 기능에 문제가 있어 수정한 것으로, 하위 호환성 보장 |
요약하자면,
메이저 버전이 바뀌었다면, 기존 버전과 호환되지 않는 큰 변화가 있으므로 업데이트 시 주의가 필요합니다. 마이너나 패치 버전이 바뀌었다면, 업데이트 시 큰 문제가 발생하지 않을 가능성이 높습니다.
패키지 버전에서 기호
패키지를 관리하는 방법 중에서 기호를 사용하는 방식도 존재합니다. 즉, 기호들을 사용해서 패키지 버전을 어디까지 허용하는지 등을 알 수 있게 도와줍니다.
^ : major 버전을 고정하고, minor 버전과 patch 버전을 최신 버전으로 업데이트합니다. 예를 들어, ^1.2.3은 1.2.3 이상이지만 2.0.0 미만인 버전을 모두 포함합니다.
~ : minor 버전을 고정하고, patch 버전을 최신 버전으로 업데이트합니다. 예를 들어, ~1.2.3은 1.2.3 이상이지만 1.3.0 미만인 버전을 모두 포함합니다. 즉, 이 예시에서는 1.2.9 버전 까지 업데이트가 허용 됩니다.
* : 모든 버전을 의미합니다. 예를 들어, * 는 모든 버전을 포함합니다.
- : 버전 범위를 지정할 때 사용됩니다. 예를 들어, 1.2.3 - 1.2.5는 1.2.3 이상이고 1.2.5 이하인 버전을 모두 포함합니다. 즉, 앞서 기호들이 메이저, 마이너 등으로 범위가 제한되어 있다면, - 기호는 사용자가 직접 허용하는 버전을 지정할 수 있습니다.
||: 버전 범위를 여러 개 지정할 때 사용됩니다. 예를 들어, 1.2.3 || >=2.0.0 <2.3.0은 1.2.3 버전 또는 2.0.0 이상 2.3.0 미만인 버전을 모두 포함합니다.
이러한 기호들은 일반적으로 패키지의 의존성(dependency)을 관리하는 데 사용됩니다. 패키지를 설치할 때 이러한 기호들을 사용하여 패키지 버전을 지정할 수 있습니다.
예를 들어, "dependencies": {"package-name": "^1.2.3"} 은 패키지 버전 1.2.3 이상이지만 2.0.0 미만인 버전을 모두 포함하는 package-name 패키지를 의존성으로 설치하도록 지정합니다.
'백엔드 > 노드' 카테고리의 다른 글
[node.js] static 파일과 static 미들웨어 (0) | 2023.03.14 |
---|---|
[node.js] MVC 패턴 (0) | 2023.03.14 |
[node.js] npx 와 전역설치(-g)의 장.단점 (0) | 2023.03.12 |
[node.js] package.json (0) | 2023.03.12 |
[NodeJS] Buffer 클래스 (0) | 2023.03.09 |