Node

npm install / npm ci 차이점

minjaem 2023. 5. 10. 22:56

들어가기 전에

pacakge.jsonpacakge-lock.json의 차이에 대해서 이해해야 한다.

간략히 차이를 말하자면,

package.json은 ^ 등을 이용해서 version range로 버전으로 명시하여 의존성 목록을 만든다.

pacakge-lock.json은 정확한 버전을 명시하여 의존성 목록을 만든다.

 

공통점

의존성 모듈을 설치한다.

차이점

npm install

 npm install 명령어를 통해 설치를 하면 package.json에 의존성 목록이 추가될 것이고 package-lock.json도 업데이트가 될 것이다.

즉, node_modules와 package-lock.json 파일이 존재하지 않아도 pacakge.json을 보고 node_modules와 pacakge-lock.json을 생성 / 업데이트 할 수 있다.

npm ci

 반면, npm ci는 package-lock.json을 기반으로 의존성 모듈을 설치하기 때문에 package-lock.json이 반드시 존재해야 한다.

npm ci 명령어를 실행하면 먼저 node_modules를 삭제한 후, 의존성을 한번에 설치한다. 또한, package-lock.json을 수정하지 않는다.

언제 사용하면 좋을까?

원격 저장소의 프로젝트를 로컬에 초기 설정할 때 / CICD 환경

프로젝트에 package-lock.json 소스가 포함되어 있다면 npm ci를 통해 package-lock.json을 기반으로 패키지를 설치한다.

새로운 패키지를 프로젝트에 추가할 때

npm install을 통해서 패키지를 설치한다.

 

[참고]

https://handhand.tistory.com/274