package.lock.json이 필요합니까? 및 npm 새로 설치

노드 패키지 모듈로 작업하거나 React 또는 노드 애플리케이션에서 yarn.lock으로 원사에서 작업하는 동안 package.json 및 package.lock.json을 접했을 수 있습니다. 하지만 왜 필요한가요?

배경



기본적으로 package.json은 설치될 모든 여러 패키지에 대한 매니페스트 파일 역할을 하며 하위 종속성을 포함하여 종속성의 버전 트리를 유지합니다. 이는 버전 의미론, 스크립트 및 브라우저 목록과의 종속성으로 구성됩니다.




package.lock.json은 프로젝트에 사용된 모든 패키지의 정확한 버전 목록을 포함하며 설치된 버전의 종속성을 잠그는 데 필요합니다.


npm install은 언더후드에서 무엇을 하나요?




npm install -s MODULE_NAME


  • 먼저 이름으로 모듈을 검색합니다.
  • 패키지 모듈 및 종속성을 설치합니다.
  • package.lock.json을 업데이트하거나 생성하고 package.json에 해당 패키지 이름과 버전을 추가했습니다
  • .

    따라서 누군가가 이제 프로젝트를 복제하고 npm 설치 명령을 실행하면 노드 패키지 관리자는 lock.json 및 package.json의 버전을 참조하여 이전과 동일한 파일을 다운로드하는지 확인하지만 둘 다 비교합니다. 일치하면 잠금 파일을 따르지만 일치하지 않으면 어떻게 됩니까? 그런 다음 npm은 package.json의 매니페스트를 승인된 것으로 간주하고 package.lock.json을 업데이트합니다.

    package.json 의미 체계 버전 관리에 대해 알아야 할 수도 있습니다.



    일반적으로 npm 패키지 버전은 1.0.1처럼 보입니다. 오른쪽에서 첫 번째 숫자는 패치 버전이고 두 번째 숫자는 마이너 버전이고 마지막 숫자는 메이저 버전입니다.
  • 패치 릴리스는 기능으로 해결된 버그 또는 이전 버전과의 호환성 버그 수정 및 패치 버전 시맨틱으로 구성됩니다. ~1.0.x
  • 마이너 릴리스는 새 기능이 추가되고 이전 버전과의 호환성이 있어야 하며 마이너 버전 의미: ^1.x 또는 ^1.1.3
  • 주 릴리스는 이전 버전과의 호환성 및 주 버전 의미 체계(* 또는 x)를 깨뜨릴 수 있는 기능인 경우입니다.



  • 이제 npm 설치 업데이트 lock.json으로 돌아가 보겠습니다. 일부 개발자는 종속성을 직접 변경하는 경향이 있거나 프로젝트에서 패키지 종속성을 업데이트하고 lock.json이 아닌 package.json만 커밋하는 경우를 가정해 보겠습니다. 즉, 일부 개발자가 저장소를 복제하는 동안 .....

    npm 새로 설치 항목




    npm clean-install
    


    npm ci는 lockfile 참조에서 모듈을 설치하기 위해 package.json의 패키지를 우회합니다. 이것은 재현 가능한 빌드를 보장합니다. 즉, 모든 설치에서 기대하는 것을 정확하게 얻을 수 있습니다.

    이전에는 node_modules/및 package.json을 동기화 상태로 유지하려는 개발자는 node_modules 폴더를 보관해야 했습니다. npm ci는 이 프로세스를 단일 명령으로 대체합니다.

    어떤 단계를 거치나요
  • node_modules fodler가 있으면 삭제하고 새 것을 설치합니다
  • .
  • lock.json이 존재하지 않거나 package.json과 버전이 일치하지 않으면 오류가 발생하고 중지됩니다.

  • 경우에 따라 Npm CI가 더 빠르고 가독성이 향상됩니다.
    check this github

    결론:
  • 다음에 저장소를 복제할 때 버전 호환성 문제를 방지하려면 npm clean install을 사용하십시오.
  • package.json을 직접 업데이트하지 마십시오.
  • 좋은 웹페이지 즐겨찾기