프로젝트를 진행하면서 서로의 작업내용을 합칠 때 package-lock.json
파일에서 충돌이 났다.
충돌을 해결하는 도중 npm ci
에 대해 알게 되어서 글을 작성하려고 한다.
npm ci
명령을 실행하기 전에 프로젝트 디렉토리에package-lock.json
파일이 있어야 한다.
ci는 clean install을 뜻한다.
npm ci
명령은 Node.js와 npm (Node Package Manager)을 사용하는 상황에서 사용되는 명령어 이다. 이 명령어는 지속적 통합 (Continuous Integration, CI) 및 자동화된 빌드 환경에서 사용되도록 설계되었다.
npm ci
를 실행하면 npm은 다음과 같은 작업을 수행한다
package-lock.json
파일을 읽어서 설치할 패키지의 정확한 버전을 판단한다. 이 때 npm install
명령어와는 달리 package.json
을 보지 않는다.
package-lock.json
에 명시된 의존성 및 개발 의존성을 node_modules
디렉토리에 설치
설치된 패키지 버전이 package-lock.json
에 명시된 버전과 일치하는지 확인한다. 일치하지 않을 경우 npm ci
는 오류를 발생시켜 일관되고 재현 가능한 설치를 보장한다.
npm ci
는 package-lock.json
파일을 기반으로 의존성을 설치한다. 이를 통해 정확한 버전과 의존성 그래프를 따라가며 설치하므로, 일관성과 재현 가능성이 높아진다.
npm install
과 달리 의존성 해결을 수행할 필요가 없으므로 빠른 설치가 가능하다.
개발 과정 중에 프로젝트에 새로운 의존성을 추가하거나 의존성을 업데이트해야 할 때 사용한다.
package.json
및 package-lock.json
파일에 명시된 의존성 버전을 기반으로 의존성을 설치한다.
패키지 버전 간에 작은 업데이트나 수정이 있는 경우에도 적절하게 처리g다.
보통 CI/CD 파이프라인, 자동화된 빌드, 배포 등에서 사용된다.
package-lock.json
파일의 의존성 목록과 버전을 정확하게 따라가며, 더 엄격한 의존성 해결을 한다.
일관된 의존성 설치와 재현 가능한 빌드 환경을 보장한다.
개발자가 의존성을 직접 추가하거나 업데이트할 필요가 없는 경우에 유용한다.
개발 과정에서 패키지를 설치할 때는 npm install
명령을 사용하고, 프로젝트를 클론하거나 다른 환경에서 동일한 의존성을 설치해야 할 때는 npm ci
명령을 사용하는 것이 좋다.