질문 : “npm install”이 package-lock.json을 다시 작성하는 이유는 무엇입니까?
최근에 npm @ 5로 업그레이드했습니다. 이제 package.json의 모든 항목이 포함 된 package-lock.json 파일이 있습니다. npm install
을 실행할 때 내 node_modules 디렉토리에 무엇을 설치해야하는지 결정하기 위해 잠금 파일에서 종속성 버전을 가져올 것으로 예상합니다. 이상한 점은 실제로 내 package-lock.json 파일을 수정하고 다시 작성한다는 것입니다.
예를 들어, 잠금 파일에는 버전 2.1.6으로 지정된 typescript가 있습니다. 그런 다음 npm install
명령 후 버전이 2.4.1 로 변경되었습니다. 그것은 잠금 파일의 모든 목적을 무너 뜨리는 것 같습니다.
내가 무엇을 놓치고 있습니까? npm이 실제로 내 잠금 파일을 존중하도록하려면 어떻게합니까?
답변
업데이트 3 : 다른 답변에서도 지적했듯이 npm 5.7.0에는 CI 컨텍스트에서 빠르고 재현 가능한 빌드를 달성하는 추가 방법으로 npm ci
자세한 내용은 설명서 및 npm 블로그 를 참조하십시오.
업데이트 2 : 문서를 업데이트하고 명확히하는 문제는 GitHub 문제 # 18103 입니다.
업데이트 1 : 아래에 설명 된 동작이 npm 5.4.2에서 수정되었습니다. 현재 의도 된 동작은 GitHub 문제 # 17979에 설명되어 있습니다.
원래 답변 : package-lock.json
의 동작은 문제 # 16866 에서 논의 된대로 npm 5.1.0 에서 변경되었습니다. 관찰 한 동작은 버전 5.1.0부터 npm에서 의도 한 것 같습니다.
것을 그 말 package.json
대체 할 수 있습니다 package-lock.json
최신 버전의 종속성에 대한 발견 될 때마다 package.json
. 종속성을 효과적으로 고정하려면 이제 접두사없이 버전을 지정해야합니다. 예를 들어 ~1.2.0
또는 ^1.2.0
대신 1.2.0
으로 작성해야합니다. package.json
및 package-lock.json
의 조합은 재현 가능한 빌드를 생성합니다. 명확하게 package-lock.json
만으로는 더 이상 루트 수준 종속성을 잠그지 않습니다!
이 디자인 결정이 좋은지 여부는 논쟁의 여지가 있지만 GitHub에 대한이 혼란으로 인한 논의가 진행 중 입니다. (내 눈에는 의심스러운 결정입니다. 적어도 이름 lock
은 더 이상 유효하지 않습니다.)
추가 참고 사항 : npmjs.org 대신 GitHub에서 직접 패키지를 가져올 때와 같이 변경 불가능한 패키지를 지원하지 않는 레지스트리에 대한 제한도 있습니다. 자세한 설명은이 패키지 잠금 문서를 참조하십시오.
출처 : https://stackoverflow.com/questions/45022048/why-does-npm-install-rewrite-package-lock-json
'프로그래밍 언어 > HTML,CSS,JS' 카테고리의 다른 글
CSS로 div의 종횡비 유지 (0) | 2021.08.23 |
---|---|
SCSS와 Sass의 차이점 (0) | 2021.08.20 |
배경 이미지 데이터를 CSS에 Base64로 내장하는 것이 올바른 방법인가? (0) | 2021.08.20 |
필요하지 않은 경우 CSS 스크롤 막대 숨기기 (0) | 2021.08.20 |
CSS 100% 높이를 가지면서도 padding/margin를 포함하는 방법 (0) | 2021.08.20 |