npm i 와 npm ci 모두 의존성을 설치하기 위한 명령어다.
나는 항상 npm i만 사용해왔는데, 이번에 npm ci라는 커맨드를 처음 접하게 되었다.
package.json와 package-lock.json을 참조하여 dependency를 설치한다.
1. package-lock.json 파일 존재 여부:
package-lock.json 파일이 있으면 이를 참고하여 dependency를 설치한다.
만약 package-lock.json 파일이 없으면 package.json만 참고하여 dependency 설치하고, 설치 후 package-lock.json 파일을 새로 생성한다.
2. 새로운 dependency 추가:
새로운 dependency를 추가할 경우, package.json과 package-lock.json이 업데이트된다.
3. 기존 의존성 업데이트 가능:
지정된 버전 범위에 따라 더 최신 버전의 의존성을 설치할 수도 있다.
Continuous Integration(CI) 환경에서 사용되도록 설계된 명령어로, 의존성을 완전히 재현 가능한 환경에서 설치한다.
1. package-lock.json 필수:
반드시 package-lock.json 파일이 있어야 작동한다.
package-lock.json 파일에 명시된 정확한 버전의 의존성을 설치한다.
2. 모든 기존 의존성 제거:
node_modules 디렉토리를 완전히 삭제하고 새로 설치한다.
3. 업데이트 없음:
package-lock.json과 package.json을 절대 수정하지 않는다.

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