package version

패키지 버전 이해하기 노드 패키지들의 버전은 항상 세 자리로 이루어져 있습니다. 심지어 노드의 버전도 세 자리입니 다. 버전이 세 자리인 이유는 SemVer 방식의 버전 넘버링을 따르기 때문입니다. semVer는 Semantic Yersioning(유의적 버전)의 약어입니다. 버전을 구성하는 세 자리가 모두 의미를 가지고 있다는 뜻입니다. 각각 패키지는 모두 버전이 다르고 패키지 간의 의존 관계도 복잡합니다. 만약 어떤 패키지의 버 전을 업그레이드했는데 그것을 사용하는 다른 패키지에서 에러가 발생한다면 문제가 됩니다. 많 은 패키지가 서로 얽히다 보면 이 문제는 점점 더 심각해집니다. 따라서 버전 변호를 어떻게 정하 고 올려야 하는지를 명시하는 규칙이 등장했습니다. 이것이 바로 SemVer입니다. 버전의 첫 번째 자리는 major 버전입니다. 주 버전이 0이면 초기 개발 중이라는 뜻입니다. 1부터 는 정식 버전이라는 뜻입니다. major 버전은 하위 호환이 안 될 정도로 패키지의 내용이 수정되 었을 때 올립니다. 예를 들어 1.5.0에서 2.0.0으로 올렸다는 것은, 1.5.0 버전 패키지를 사용하고 있던 사람들이 2.0.0으로 업데이트했을 때 에러가 발생할 확률이 크다는 뜻입니다. 두 번째 자리는 minor 버전입니다. minor 버전은 하위 호환이 되는 기능 업데이트 시에 올립니 다. 버전을 1.5.0에서 1.6.0으로 올렸다면 1.5.0 사용자가 1.6.0으로 업데이트했을 때 아무 문제 가 없어야 합니다.

세 번째 자리는 patch 버전입니다. 새로운 기능이 추가되었다기보다는 기존 기능에 문제가 있어 수정한 것을 내놓았을 때 patch 버전을 올립니다.

새 버전을 배포한 후에는 그 버전의 내용을 절대 수정하면 안 됩니다. 만약 수징 사항이 생기면 major 버전, minor 버진. palch 버진 중 하나를 의미에 맞게 올려서 새로운 버전으로 배포해야 합니다. 배포된 버전 내용이 바뀌지 않기 때문에 패키지 간 의존 관계에 큰 도움이 됩니다. 특정 버전이 정상적으로 동작하고, 같은 버전을 사용한다면 어떠한 경우라도 정상적으로 동작할 것이 라 믿을 수 있습니다. 버전의 숫자마다 의미가 부여되어 있으므로 다른 패키지를 사용할 때도 버진만 보고 에러 발생 이 부를 가능할 수 있습니다. 의존하는 패키지의 major 버전이 업데이트되었다면 기존 코드와 호환 이 되지 않을 화물이 크기 때문에 미리 주의를 기울여야 합니다. minor나 patch 버전 업데이트 는 비교적 안심하고 버전을 올릴 수 있습니다. package.json에는 SemVer식 세 자리 버전 외에도 버전 앞에 ^나 ~ 또는 >, 같은 문자가 붙어 있습니다. 이 문자는 버전에는 포함되지 않지만 설치 또는 업데이트 시 어떤 버전을 설치해야 하 는지 알려줍니다. 가장 많이 보는 기호는 ^입니다. minor 버전까지만 설치 또는 업데이트합니다. npa 1 express01.1. 1이라면 1.1.1 = 버전 2.0.0까지 설치됩니다. 2.0.0은 설치되지 않습니다. 1X,x와 같이 표현할 수도 있습니다. ~ 기호를 사용한다면 PMich 버전까지만 설치 또는 업데이트합니다. npm 1 expresse-1.1.1이라면 1.1.1< 버전 <1.2.0까지 설치됩니다. 1.1.x와 같은 표현도 가능합니다. ~보다 ~가 많이 사용되 는 이유는 minor 버전까지는 하위 호환이 보장되기 때문입니다. 2 5.2, , 또는 알기 쉽게 초과, 미만, 이상, 이하, 동일을 뜻합니다. Tm 1 eprEs61.1.21처점 사용합니다. 반드시 1.1.1 버전보다 높은 버전이 설치됩니다.

추가로 @latest도 사용하는데, 항상 최신 버전의 패키지를 설치합니다. x로도 표현할 수 있습니다

예시: npm i express@latest 또는 npm i express®x.