Node
npm install / npm ci 차이점
minjaem
2023. 5. 10. 22:56
들어가기 전에
pacakge.json과 pacakge-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