npm i vs npm ci

ding·2024년 12월 5일

npm inpm ci 모두 의존성을 설치하기 위한 명령어다.
나는 항상 npm i만 사용해왔는데, 이번에 npm ci라는 커맨드를 처음 접하게 되었다.

npm i

package.jsonpackage-lock.json을 참조하여 dependency를 설치한다.
1. package-lock.json 파일 존재 여부:
package-lock.json 파일이 있으면 이를 참고하여 dependency를 설치한다.
만약 package-lock.json 파일이 없으면 package.json만 참고하여 dependency 설치하고, 설치 후 package-lock.json 파일을 새로 생성한다.
2. 새로운 dependency 추가:
새로운 dependency를 추가할 경우, package.jsonpackage-lock.json이 업데이트된다.
3. 기존 의존성 업데이트 가능:
지정된 버전 범위에 따라 더 최신 버전의 의존성을 설치할 수도 있다.

npm ci

Continuous Integration(CI) 환경에서 사용되도록 설계된 명령어로, 의존성을 완전히 재현 가능한 환경에서 설치한다.
1. package-lock.json 필수:
반드시 package-lock.json 파일이 있어야 작동한다.
package-lock.json 파일에 명시된 정확한 버전의 의존성을 설치한다.
2. 모든 기존 의존성 제거:
node_modules 디렉토리를 완전히 삭제하고 새로 설치한다.
3. 업데이트 없음:
package-lock.jsonpackage.json을 절대 수정하지 않는다.

When To Use?

  1. npm install
  • 새로운 의존성을 추가하거나, 개발 중 의존성을 관리할 때
  • 프로젝트 초기 설정, 의존성 버전 범위를 활용하여 최신 버전으로 작업할 때
  1. npm ci
  • CI/CD 환경에서 정확한 버전을 재현해야 할 때
  • 배포 환경에서 의존성을 설치할 때
  • 항상 동일한 의존성 버전으로 작업해야 할 때

개발 환경에서는 npm install을, 배포 환경이나 CI/CD 파이프라인에서는 npm ci를 사용하는 것이 적합하다.

0개의 댓글