Skip to content

Latest commit

 

History

History
17 lines (7 loc) · 1.45 KB

Node.js npm shrinkwrap.md

File metadata and controls

17 lines (7 loc) · 1.45 KB

Node.js npm shrinkwrap 를 활용한 운영 환경 패키지 버전 관리

Node.js로 개발하다보면 npm으로 외부 라이브러리를 쓰게 마련인데, 외부 라이브러리의 버전 문제가 서비스 운영에 차질을 가져올 수도 있다.

package.json에서는 보통 의존하는 라이브러리의 버전을 하나로 확정 짓지 않고 ^~ 등을 사용해서 하위 호환성이 보장되는 선에서 의존하는 라이브러리의 최신 버전을 npm install을 통해 새로 받아서 사용한다.

우리가 스스로 작성한 package.json 뿐아니라 가져다 쓰는 외부 라이브러리의 package.json 파일도 ^~ 등을 사용하므로, 사실상 라이브러리 버전 관리는 우리의 제어권을 벗어나버린다.

그리고 제어권 밖의 어느 지점에서 우리 환경과 맞지 않는 라이브러리가 출현하면 npm install은 실패하고 서비스 운영에 차질이 생긴다.

어느 시점 이후로는 npm install을 금지해서 라이브러리 버전이 바뀌는 것을 원천적으로 막는 하드코어한 방식으로 깔끔하게 이 문제를 해결할 수도 있지만, 보다 소프트코어한 해결 방식도 있다.

바로 npm shrinkwrap인데, 한 마디로 현재 설치된 라이브러리 버전을 기준으로 package.json 보다 우선 순위가 더 높은 npm-shrinkwrap.json을 생성해서 이 파일을 기준으로 npm install을 실행하는 것이다.