게시글

5만명이 선택한 평균 별점 4.9의 제로초 프로그래밍 강좌! 로드맵만 따라오면 됩니다! 클릭
강좌28 - NodeJS - 2년 전 등록 / 7달 전 수정

npm i 대신에 npm ci, npm cit

보통 노드 모듈 설치를 할 때, npm i를 많이 하실 겁니다.
개발 할 때는 크게 문제가 없으나 배포 시 문제를 일으키는 경우가 많습니다.
바로 원인은 npm i가 항상 동일한 버전을 설치해주지 않기 때문입니다.

예를 들어 처음에 npm i 로 a 모듈 1.0.0 버전을 설치하면, package.json에는 a: ^1.0.0이 기록될 것입니다.
^1.0.0이므로 1.0.1, 1.1.0도 포함됩니다.

따라서 몇 달 뒤 npm i를 하게 되면 a 모듈의 1.1.0 버전이 설치가 될 수 있습니다. (node_modules가 없는 경우에 주로 업데이트됩니다)
1.0.0 버전에서는 에러가 없었는데 혹시 1.1.0 버전이 에러가 있는 경우 낭패를 보게 되는 것이죠.

잘 보면 package-lock.json 내용도 바뀌어있는 것을 볼 수 있습니다. npm i 가 항상 같은 버전을 설치하는 게 아니라 버전을 업데이트해버릴 수도 있는 것이죠.

이럴 때 npm ci를 사용하면 좋습니다.

package-lock.json에 고정된 버전 그대로 설치를 합니다. package-lock.json에 1.0.0으로 기록되어있다면 1.1.0 버전이 나와있고 package.json에 ^1.0.0이더라도 항상 1.0.0 버전이 설치됩니다.

배포 시나 CI/CD 시에는 웬만하면 npm ci를 사용하시길 추천드립니다.
npm cit도 있습니다. npm ci에 npm test가 합쳐진 것이라고 보면 됩니다. npm ci로 항상 같은 버전을 설치하므로 npm cit도 항상 같은 테스트가 진행됩니다. 저는 CI/CD에서 npm cit 명령어 하나로 설치와 테스트를 끝내고, npm run build로 빌드한 뒤 배포합니다. npm i를 할 때 있었던 버전 문제가 없어져서 좋습니다.

조회수:
0
목록
투표로 게시글에 관해 피드백을 해주시면 게시글 수정 시 반영됩니다. 오류가 있다면 어떤 부분에 오류가 있는지도 알려주세요! 잘못된 정보가 퍼져나가지 않도록 도와주세요.
Copyright 2016- . 무단 전재 및 재배포 금지. 출처 표기 시 인용 가능.
5만명이 선택한 평균 별점 4.9의 제로초 프로그래밍 강좌! 로드맵만 따라오면 됩니다! 클릭

댓글

아직 댓글이 없습니다.