본문 바로가기

Programming/Node.js

6. 패키지 매니저 (1) - npm [6]

node js logo image

 

 

 

 

 

○ patch-package

 

간혹 설치한 패키지에서 문제가 발생하는 경우도 있습니다. 그럴 경우에는 node_modules 내부 피키지를 수정하는 것도 가능합니다. 단, 이 경우에는 npm i를 실행하게 될 경우 직접 수정한 내용이 초기화 된다는 약점이 있습니다. 그래서 node_modules 내부의 수정 사항을 영구적으로 반영해주는 patch-package 패키지가 있습니다. 

 

사용법은 다음과 같습니다. 우선 package.json을 아래와 같이 수정하고나서 patch-package 패키지를 설치합니다. 

 

 

"scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "postinstall": "patch-package"
  },

 

 

이후 콘솔에서 아래와 같이 실행합니다. 

 

 

$ npm i patch-package
// node_modules 내부의 원하는 패키지 수정 진행
$ npx patch-package [수정한 패키지 명]

 

 

위와 같은 과정을 거치게 되면, patches라는 폴더가 생성되고 그 안에 patch 확장자를 가진 파일이 생성됩니다. 이후에는 npm i를 실행해도 patch-package가 patch 파일을 읽어서 수정 사항을 적용하게 됩니다. 

 

 

 

 

 


 

 

 

 

○ 패키지의 버전 표시

 

통상적인 버전 표시와 마찬가지로, 노드의 패키지들도 SemVer 방식의 버전 넘버링을 따릅니다. Semantic Versioning(유의적 버전)을 따라 구성을 진행하게 됩니다. 이는 상호 의존도가 높아 버전 번호에 대한 규칙이 명확해야 하는 노드 패키지의 특성으로 인한 것입니다. 

 

SemVar는 노드 패키지를 기준으로 메이저.마이너.패치를 기준으로 나누게 됩니다. 메이저(major) 버전은 0일 경우 개발 중, 1 부터가 정식 버전을 의미합니다. 메이저 버전이 승급되면, 하위 호환이 불가능한 수준입니다. 1.7.0에서 2.0.0이 되었을 경우, 1.7.0 버전을 계속 사용하던 사람들이 2.0.0으로 업데이트 했을 때 에러가 발생활 확률이 대단히 높습니다. 

 

마이너(minor) 버전은 하위 호환은 되지만 기능이 업데이트 되었을 경우를 의미합니다. 일반적으로 1.2.0에서 1.3.0으로 업데이트 했을 때는 기능상 문제가 없어야 합니다. 

 

패치(patch) 버전은 기능 추가보다는 버그 픽스와 같은 간단한 수정이 이루어지는 버전이며, 역시 업데이트 이후 문제가 없어야 합니다.