이슈를 마주쳤을 때, 구글링을 하다보면,
가끔 npm ci
를 사용하라는 솔루션을 만나고는 했다.
오늘은 npm ci
에 대해 좀 더 알아보고자 한다.
npm ci
에서 ci는 clean-install
을 뜻한다고 한다.
여러 작업자가 함께 작업하는 CI 환경이나 배포(deploy), 테스트 등의 환경에서
다른 환경과 같은 결과물을 보기 위해 주로 사용한다고 한다.
(lock 파일을 기준으로 설치하기 때문에)
npm ci
는 npm install
과는 다르게 package-lock.json
이 존재하는 환경에서만 실행 가능하다.
만약 package-lock.json
파일이 package.json
파일과 다른 의존성을 가지고 있다면,npm ci
는 package-lock.json
을 업데이트하는 대신 error와 함께 종료된다.
만약 node_modules가 이미 존재한다면, npm은 자동으로 이 폴더를 먼저 비우고 새로 설치한다.
가끔 npm install
은 package-lock.json
파일을 업데이트 하곤 하는데,npm ci
는 package-lock.json
파일이나 package.json
파일을 수정하지 않는다고 한다.