ci: continuous integration
package-lock.json이나 npm-shrinkwrap.json 에 정확히 명시된 버전으로만 패키지를 설치
이 명령어는 기존의 node_modules 디렉토리를 삭제하고, package-lock.json에 명시된 버전과 구조대로 새롭게 패키지를 설치합니다.
즉 정확한 의존성을 설치
일반적으로 더 빠름(메타데이터 재계산, 버전 호환성 검사 안하기 때문에)
package.json에 명시된 의존성을 기반으로 새로운 패키지를 계산하고 설치할 때 일부 최신 버전 선택
버전 업데이트 허용: npm install은 package-lock.json 파일에 명시된 패키지 버전을 기본적으로 설치하지만, package.json 파일에 더 새로운 버전의 범위가 명시되어 있을 경우, 이를 업데이트하고 package-lock.json 파일도 업데이트할 수 있습니다. 즉, 의존성 관리에 있어서 더 유연합니다.
부분 설치 지원: npm install은 특정 패키지만을 명령어와 함께 지정하여 설치할 수 있습니다 (예: npm install [package-name]). 이 경우, 해당 패키지와 관련된 의존성만 업데이트되며, 다른 의존성은 package-lock.json에 명시된 대로 유지됩니다.
반면, npm ci는 항상 package-lock.json 또는 npm-shrinkwrap.json 파일에 정확히 명시된 패키지와 버전만을 설치합니다. 이 명령어는 package.json의 의존성 범위를 무시하고, 어떠한 패키지도 업그레이드하거나 변경하지 않습니다. 그리고 특정 패키지만을 선택적으로 설치하는 것은 지원하지 않습니다.
일관된 환경을 유지하고자 할 때 npm ci가 더 적합할 수 있고, 개발 과정 중 특정 패키지의 추가나 업데이트가 필요할 때는 npm install이 더 유용할 수 있습니다.