npm 트리 수정이나 어떤 행동 package.json node_modules 경우 package-lock.json가 자동으로 생성됩니다. 이 트리는 중간 의존성 업데이트와 관계없이 이후 설치가 동일한 트리를 생성할 수 있도록 생성되는 정확한 트리를 설명합니다.
이 파일은 소스 코드 저장소에 제출될 예정이며, 다양한 목적으로 제공됩니다:
팀원, 배포, 지속적 통합이 동일한 의존성을 설치하도록 보장하는 의존성 트리의 단일 표현을 설명합니다.
사용자가 디렉터리 자체를 커밋하지 않고도 이전 node_modules 상태로 "진행"할 수 있는 도구를 제공합니다.
읽기 쉬운 소스 컨트롤 차이를 통해 트리 변경 사항을 더 잘 가시화할 수 있도록 합니다.
그리고 npm이 이전에 설치된 패키지의 중복 메타데이터 해석을 건너뛸 수 있도록 하여 설치 과정을 최적화합니다.
package-lock.json에 관한 중요한 점은 이 패키지는 공개될 수 없으며, 최상위 패키지 외 어디에서든 발견되면 무시된다는 점입니다. npm-shrinkwrap.json와 포맷을 공유하며, 기본적으로 같은 파일이지만 게시가 가능합니다. CLI 도구를 배포하거나 릴리스 프로세스를 통해 프로덕션 패키지를 생성하지 않는 한 권장되지 않습니다.
만약 package-lock.json와 npm-shrinkwrap.json가 모두 패키지의 루트 디렉터리에 존재한다면, package-lock.json 완전히 무시됩니다.
원본 링크: https://docs.npmjs.com/files/package-lock.json
npm 5.x 출시 이후 5.6.0 잠금의 역할이 여러 차례 변경되었으며, 현재 인터넷상의 많은 작은 흰색 텍스트가 이전 문서 번역에 갇혀 있습니다.
npm3.x에서 npm5로 업데이트했는데, 'npm i'를 실행할 때 나타나는 현상이 인터넷의 대중 과학 기사와 일치하지 않는다는 것을 알게 되었습니다.
파일이 어떻게 수정되든 npm i가 반복적으로 실행되면 잠금 파일에 설명된 버전 정보에 따라 npm이 다운로드된다는 package.json이 언급되어 있습니다.
또한 npm i를 반복할 때 npm이 잠금 정보를 무시하고 package.json 내 패키지의 의미 버전 정보에 따라 업데이트 모듈을 다운로드한다는 점도 언급되어 있습니다(잠금 기능은 쓸모없는 것 같습니다).
**정보에 따르면, NPM 5.0 출시 이후 NPM 규칙이 세 번 변경되었습니다. **
1. NPM 5.0.x 버전, package.json가 어떻게 변하든 잠금 파일에 따라 NPM I가 다운로드됩니다
파일이 변경된 후 업데이트되지 않은 package-lock.json 파일 package.json · 호 #16866 · NPM/NPM https://github.com/npm/npm/issues/16866 이 문제는 이 문제를 불평하는 거예요. 분명히 수동으로 package.json을 바꿨으니, 업그레이드 패키지를 주세요! 그리고 이것이 5.1.0 문제로 이어집니다...
2. 버전 5.1.0 이후에는 npm 설치가 잠금 파일을 무시하고 최신 npm을 다운로드합니다.
그런데 누군가 왜 패키지 락이 무시되는지 이런 문제를 제기했습니다. · 호 #17979 · NPM/NPM https://github.com/npm/npm/issues/17979 이 불만은 결국 버전 5.4.2 이후에 규칙으로 발전했습니다.
3. 버전 5.4.2 이후, 왜 패키지 락이 무시되고 있나요? · 호 #17979 · NPM/NPM https://github.com/npm/npm/issues/17979
대략적으로 말하면, package.json가 변경되고 package.json가 잠금 파일과 다르면, npm은 'npm i'를 실행할 때 버전 번호와 의미에 따라 최신 패키지를 다운로드하고 잠금 상태로 업데이트합니다.
두 모드가 같은 상태라면, 실제 패키지 버전이 새로운지 여부와 상관없이 npm을 실행할 때 잠금 명령에 따라 다운로드됩니다.
|