package-lock.json과 package.json이 모두 필요합니까?


149

NPM을 최신 버전 (3.X에서 5.2.0으로) npm install으로 업데이트하고 기존 프로젝트에서 실행 한 후 자동 생성 된 package-lock.json파일을 얻습니다 .

package-lock.json와는 달리 정확한 종속성 트리를 제공 할 수 있습니다 package.json.

그 정보만으로는 package.json중복되는 것처럼 보이고 더 이상 필요하지 않습니다.

NPM이 작동하려면 둘 다 필요합니까? 파일
만 사용하는 것이 안전 package-lock.json합니까?

package-lock.json ( doc1 , doc2 ) 문서에 대해서는 언급하지 않았습니다.

편집 :

그것에 대해 좀 더 생각한 후에 누군가가 이전 버전의 NPM (5.x 이전)에서 프로젝트를 사용하려는 경우 여전히 모든 종속성을 설치하지만 덜 정확한 버전 (패치 버전)으로 설치한다는 결론에 도달했습니다.


답변:


103

이 필요하십니까 모두 package-lock.jsonpackage.json? 없음 .

당신은 필요 package.json합니까? .

package-lock.json? 만있는 프로젝트를 가질 수 있습니까 ? 없음 .

package.json의존성 이상을 사용 - 프로젝트 속성, 설명, 저자 및 라이센스 정보, 스크립트는이 정의처럼 package-lock.json단독으로 특정 버전 번호 잠금 종속성으로 사용됩니다.


19

package-lock.json: 설치된 각 패키지의 정확한 버전을 기록하여 다시 설치할 수 있습니다. 향후 설치에서는 동일한 종속성 트리를 구축 할 수 있습니다.

package.json: 앱에 필요한 최소 버전을 기록합니다. 특정 패키지의 버전을 업데이트하면 변경 사항이 여기에 반영되지 않습니다.


1
위의 내용이 true이고 package.json앱에 필요한 최소 버전을 기록하고 package-lock.json이 설치된 각 패키지의 정확한 버전을 기록하면 모듈이 패키지의 0.112.1 버전으로 설정되는 이상한 상황이 있습니다 package-lock.json에서 .json 및 0.110.0 ...
Jean-François Beauchamp

6

잠금 파일을 소스 제어에 커밋 해야하는 경우 질문이 있어야합니다. 특정 상황에서는 무시됩니다.

풀 요청과 커밋 기록이 부풀어 오른 것을 발견 했으므로 변경 사항이 보이면 별도 커밋을 수행하십시오.


1
아니요, 소스 제어에 대한 커밋에 대해 묻지 않았습니다. 그냥 경우 NPM은 둘 다 필요로 동시에 작업한다. package-lock.json보다 장황한 버전의 것처럼 보이 package.json므로 잠금 파일 만 사용하는 것이 안전하거나 가능합니다.
Omri Luzon

나는 프로젝트에 package.json을 남겼으며 주로 npm 스크립트를위한 장소를 가지고있다.
Stanley Kirdey

1
버전 관리 를 할 것인지에 대한 별도의 질문 이 있습니다 package-lock.json.
Adrian W

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.