npm-shrinkwrap.json과 package-lock.json의 차이점은 무엇입니까?
npm @ 5 가 출시package-lock.json 되면 npm-shrinkwrap.json이미 존재 하지 않는 한 이제는 씁니다 .
다음을 통해 전 세계적으로 npm @ 5를 설치했습니다.
npm install npm@5 -g
그리고 지금 npm-shrinkwrap.json다음 중에 a 가 발견 되면 :
npm install
경고가 인쇄됩니다 :
npm WARN read-shrinkwrap This version of npm
is compatible with lockfileVersion@1,
but npm-shrinkwrap.json was generated for lockfileVersion@0.
I'll try to do my best with it!
그래서 내 테이크 아웃은 수축 포장을로 교체해야한다는 것 package-lock.json입니다.
그러나 왜 새로운 형식이 있습니까? 할 수없는 package-lock.json일이 무엇입니까 npm-shrinkwrap.json?
파일의 내용은 정확히 동일하지만 문서 사이트 와 npm 저장소의 문서 파일에 설명되어있는 npm에서 파일을 처리하는 방법에는 몇 가지 차이점 이 있습니다 .
package-lock.jsonnpm에 게시되지 않지만npm-shrinkwrap기본적으로는package-lock.json최상위 패키지에없는 파일은 무시되지만 종속성에 속하는 shrinkwrap 파일은 존중됩니다npm-shrinkwrap.jsonnpm 버전 2, 3 및 4와 역 호환되지만package-lock.jsonnpm 5 이상에서만 인식됩니다.
을 실행 하여 기존 package-lock.json을 로 변환 할 수 있습니다 .npm-shrinkwrap.jsonnpm shrinkwrap
그러므로:
- 패키지를 npm에 게시하지 않는 경우이 두 파일 중에서 선택해도 아무런 영향이 없습니다.
package-lock.json기본값이며 npm 초보자에게는 이름이 명확하기 때문에 사용할 수 있습니다 . 또는npm-shrinkwrap.json개발 팀의 모든 사람이 npm 5 이상인지 확인하기 어려운 경우 npm 2-4와의 하위 호환성을 위해 사용할 수 있습니다 . (npm 5는 2017 년 5 월 25 일에 출시되었습니다. 대부분의 사람들은 결국 업그레이드 할 예정이므로 이전 버전과의 호환성은 점점 중요 해지고 있습니다.) 당신이하면 된다 NPM에 패키지를 게시, 당신은 사이에서 선택할 수 있습니다 :
- 를 사용하여
package-lock.json설치 한 종속성의 버전을 정확하게 기록하지만 패키지를 설치하는 사용자가에 의해 지정된 버전 범위와 호환되는 모든 버전의 종속성을 사용할 수 있도록합니다package.json. - 사용하여
npm-shrinkwrap.json패키지를 설치하는 모든 사람이 얻을 보장하기 위해 정확하게 모든 종속성의 동일한 버전
문서에서 (매우 자세히) 설명 된 공식 견해는 라이브러리에 옵션 1을 사용해야한다는 것입니다 (아마도 많은 패키지 종속성이 모두 동일한 보조 종속성의 약간 다른 버전에 의존 할 때 발생하는 패키지 복제 양을 줄이기 위해) 하지만 옵션 2는 전 세계에 설치 될 실행 파일에 적합 할 수 있습니다.- 를 사용하여
이 아이디어는 package-lock.json이 슈 링크 랩 기술에서 가장 최신이자 가장 위대한 것으로, npm-shrinkwrap.json이 정확한 node_modules를 가진 라이브러리에 대해 매우 관심이있는 소중한 소수의 사람들을 위해 예약 된 것입니다. npm @> = 2를 사용하여 CI가 npm 버전을 충돌시키지 않고 특정 트리를 설치하도록 CI를 원하는 사람들을 위해.
새로운 잠금 파일 ( "package-lock.json")은 기본적으로 npm-shrinkwrap과 동일한 형식으로 동일한 코드를 모두 공유합니다 (서로 이름을 바꿀 수 있습니다). 또한 커뮤니티가 이해하는 것입니다. "잠금 파일이 있습니다"는 사람들이 훨씬 빠르게 클릭하는 것 같습니다. 마지막으로, 새 파일이 있다는 것은 부모 게시물에 언급 된 allow-publication과 같은 이상한 일을하지 않고도 수축 포장을 사용하여 상대적으로 위험이 낮은 하위 호환성을 가질 수 있음을 의미했습니다.
아이디어는 기본적으로-저장 및 수축 포장이 발생하지만 수축 포장이 원하지 않는 곳에서 발생하는 잠재적 인 문제를 피하는 것이 었습니다. 그래서 그들은 충돌을 피하기 위해 새로운 파일 이름을 부여했습니다. npm의 누군가가 여기에 더 철저하게 설명했습니다.
관련 인용문 :
npm은 기본적으로 대부분의 파일을 소스 디렉토리에 게시하며 사람들은 수년간 수축 포장을 게시 해 왔습니다. 우리는 호환성을 깨뜨리고 싶지 않았습니다. 기본적으로 --save 및 shrinkwrap을 사용하면 실수로 레지스트리를 작성하여 레지스트리를 통해 전파 할 위험이 있으며 기본적으로 dep 및 dedupe를 업데이트하는 기능은 null입니다.
그래서 우리는 새로운 이름을 선택했습니다. 그리고 우리는 갑자기 새로운 이름을 선택했습니다. 새로운 잠금 파일은 기본적으로 동일한 코드, 정확히 동일한 형식을 모두 공유합니다.
'Programming' 카테고리의 다른 글
| 새로운 예외를 던지더라도 finally 블록이 실행됩니까? (0) | 2020.07.02 |
|---|---|
| glLoadIdentity ()는 OpenGL에서 무엇을합니까? (0) | 2020.07.02 |
| iOS7에서 UITableViewCell 구분 기호가 사라짐 (0) | 2020.07.02 |
| 프로토 타입 상속-작성 (0) | 2020.07.02 |
| "R"재료를 검색하는 방법? (0) | 2020.07.02 |