본문 바로가기

노드

[node.js] 패키지의 버전과 기호

반응형


  버전의 첫 번째 자리 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.31.2.3 이상이지만 2.0.0 미만인 버전을 모두 포함합니다.

 

~ : minor 버전을 고정하고, patch 버전을 최신 버전으로 업데이트합니다. 예를 들어, ~1.2.31.2.3 이상이지만 1.3.0 미만인 버전을 모두 포함합니다. 즉, 이 예시에서는 1.2.9 버전 까지 업데이트가 허용 됩니다. 

 

* : 모든 버전을 의미합니다. 예를 들어, * 는 모든 버전을 포함합니다.

 

- : 버전 범위를 지정할 때 사용됩니다. 예를 들어, 1.2.3 - 1.2.51.2.3 이상이고 1.2.5 이하인 버전을 모두 포함합니다. 즉, 앞서 기호들이 메이저, 마이너 등으로 범위가 제한되어 있다면, - 기호는 사용자가 직접 허용하는 버전을 지정할 수 있습니다.

 

||: 버전 범위를 여러 개 지정할 때 사용됩니다. 예를 들어, 1.2.3 || >=2.0.0 <2.3.01.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