https://www.josephk.io/package-lock-json/

지우지 말아야 겠구나;

https://yceffort.kr/2020/11/javascript-dependency-hell

npm install, ci

**npm install**이 이따금씩 **package-lock.json**을 업데이트 하는 이유는, **package.json**에 정확하게 지정된 버전이 아닌 시멘틱 버전으로 작성되어 있기 때문이다. 예를 들어 **^1.1.0**으로 설치된 패키지가 있고, 시간이 흘러 **1.1.9**버전이 나온다면 **package-lock.json**은 기존 버전에서 **^1.1.9**로 설치하려 할것이다.

https://github.com/npm/npm/issues/18103

이를 막기 위한 명령어가 **npm ci**다. **package.json**이 아닌 **package-lock.json**에 명시된 버전 그 자체로 **package-lock.json**의 변경이 없이 설치를 수행한다. 많은 프로젝트에서 놓치는 것 중 하나가, 빌드나 배포단계에서 **npm ci**대신 **npm install**을 쓰는 것이다. 이는 개발단계에서는 몰랐던 얘기치 않은 에러를 낳을 수 있다.

https://blog.npmjs.org/post/621733939456933888/npm-v7-series-why-keep-package-lockjson