소포 자물쇠.제이슨 vs 패키지.근데 가방 자물쇠가 뭐야?json?

5561 단어 nodenpmjavascript
그래서, 네, 디렉터리 자물쇠에서 가장 무시되기 쉬운 파일에 대한 글을 쓰려고 합니다.json!!
소포 자물쇠.json은 매우 중요한 파일로 많은 번거로움을 피할 수 있습니다🔥 니 창고에 있어.
그래서 우리가 소포 자물쇠에 들어가기 전에의미 버전 제어와 가방에 대해 이야기해 봅시다.json.

1. 의미 버전 제어


의미 버전 제어(Semantic versioning, 약칭SemVer)는 소프트웨어 패키지에 대해 버전 제어를 하는 이상적인 방식이다.그것들은 보통 1.4.5처럼 쓴다(대조, 소조, 패치)

1a。버그 수정/패치 버전


오류 수정/문서 맞춤법 오류 등이 포함됩니다.

1b。이터레이션


추가된 함수나 API를 포함하며, 이 함수나 API는 이전 버전의 내용을 중단하지 않기 때문에 v1에서 실행되는 모든 내용을 중단하지 않습니다.1.0은 v1에 적용해야 한다.9.0도 마찬가지다.

1c。주요 버전


물건을 파괴하는 판본을 포함한다.이것은 v1에서 실행할 수 있도록 API를 삭제하거나 함수 이름을 변경할 수 있습니다.0.0이 반드시 v2에 적용되는 것은 아니다.0

2. 포장.json


소포.json은 프로젝트 정보 (이름, 버전 등) 를 포함하는 파일로 프로젝트에 의존하는 패키지를 보여 줍니다.

위의 그림에서 보듯이 모든 의존항은 가방 아래에 열거되어 있다.json에는 ^2.20.0과 유사한 숫자가 있는데 이 가방의 버전이지만 이 버전 이전에는 ^이 있었다.그래서^ 이 녀석이 너의 프로젝트를 철저히 파괴할 수 있어.
^ 버전 전에 서명해서 npm에 프로젝트를 복제하고 디렉터리에서 npm install를 실행하는 사람이 있다면 node 모듈에 이 가방의 최신 부차적인 버전을 설치하라고 알려 줍니다.
소포 하나에 ^2.20.0의 택배가 있다고 가정해 보세요.json과expressteam이 버전 2.24.0을 발표했습니다. 현재 제 리포를 복제하고 이 디렉터리에서 npm install을 실행하면 버전 2.24.0을 얻을 수 있습니다. (당신도 ~^으로 바꿀 수 있습니다. 이것은 최신 패치 버전으로 업데이트됩니다)
그러나 패키지 개발자가 부차적인 버전의 모든 기능을 파괴한다면 이것은 응용 프로그램의 붕괴를 초래할 수 있기 때문에 큰 문제가 될 수 있다.
그래서 npm은 나중에 패키지 lock이라는 새 파일을 발표했다.제이슨은 이런 상황을 피할 수 있다

3. 소포 자물쇠.json



소포 자물쇠.json은 업데이트된 부차적인 버전을 설치하는 일반적인 행동을 간단하게 피할 것입니다. 따라서 누군가가 리포를 복제하고 npm 설치를 기계에서 실행할 때.NPM은 소포 자물쇠를 조사할 것이다.json은 소유자가 설치한 패키지와 똑같은 버전을 설치하기 때문에 패키지의 ^~을 무시합니다.json.
이 밖에 npm를 설치할 때 npm에서 데이터를 얻는 시간을 절약할 수 있는 다른 메타데이터도 포함되어 있다.
패키지 잠금에 대한 자세한 내용은 npm blog을 참조하십시오.json.
이 글을 읽어 주셔서 감사합니다!
이게 유용했으면 좋겠어요.🎉 :)
편집: 그래서 댓글을 읽을 때 가방이 어떻게 잠겼는지 설명해야 할 것 같아요.json에 변화가 생겼기 때문에 다음은 제가 쓴 답장입니다. 저는 모든 사람이 읽어야 한다고 생각합니다.

Saurabh Daware 🌻

그래서 저는'프로젝트'라는 프로젝트를 만들었습니다. npm install --save [email protected]을 완성했고'프로젝트clone1','프로젝트clone2','프로젝트clone3'세 번 복제했습니다.

프로젝트 클론 1


프로젝트clone1에서 같은 가방을 가지고 있습니다.제이슨과 패키지 자물쇠.json은 원시 프로젝트로서 (이것은 내가 수동으로 어떤 내용도 바꾸지 않았다는 것을 의미함) npm install을 실행하기 때문에 원시 버전과 같은 버전, 즉 v1을 설치했다.0.0 vue 추가 비용

프로젝트 클론 2


프로젝트clone2에서도 같은 패키지가 있습니다.제이슨과 패키지 자물쇠.json, 그런데 여기서 나는 npm install을 하지 않고 npm install --save vue-extra을 했다. 이것은 가방을 업데이트하고 변경했다.제이슨과 패키지 자물쇠.json, 그래서 최신 버전인 v1을 설치했습니다.1.4 vue 추가 비용

프로젝트 클론 3


프로젝트clone3에서 패키지를 열었습니다.json은 vue extra: "^1.0.0"을 "^1.1.4"로 수동으로 변경하고 npm install 작업을 실행했습니다. 패키지를 업데이트했기 때문입니다.제이슨 npm가 이 가방을 고려했습니다.사실 json은 이미 v1을 설치했다.vue extra의 1.4 버전입니다. 패키지 자물쇠도 업데이트되었습니다.json에서 v1까지.1.4
그러니까 니 소포가json은 어떤 방식으로 변경되거나 업데이트되며 버전은 가방에 있습니다.json은 패키지 자물쇠의 버전과 일치하지 않습니다.json은 패키지에서 이 버전을 설치합니다.json이 패키지 자물쇠를 업데이트합니다.그만큼
이게 다 밝혀졌으면 좋겠어요.
이 문제를 읽고 제기해 주셔서 감사합니다.
편집 2: Kat Marchán의 의견 참조
() 그녀는 npm ci을 쓰고 가방 자물쇠를 추가했다.json - NPM

Kat Marchán

안녕하세요!나는 npm ci을 썼고 그날 package-lock.json을 NPM에 추가한 사람이기도 하다.
소포에 관한 이야기.제이슨 vs 패키지 자물쇠.json은 매우 까다롭다. npm installpackage.json버전도 무시하지 않고 package-lock.json도 무시하지 않는다.그것이 한 것은 가방이 정확한지 확인하는 것이다.제이슨과 패키지 자물쇠.json은 서로 대응한다.즉, package.json에서 기술한 semver 버전이 package-lock.json에서 잠긴 버전과 일치하면 npm install은 후자를 완전히 사용하게 된다. 마치 npm ci과 같다.
현재 package.json을 변경하면 package-lock.json의 버전이 더 이상 유효하지 않습니다. npm installnpm install [email protected]을 실행한 것으로 간주됩니다. 이 중 x.y.zpackage.jsonsome-package의 새로운 버전입니다.
이렇게 하는 것은 의도적인 것이다. npm@5의 초기 피드백 후에 우리는 사람들이 의존항을 편집하는 방식 중 하나가 package.json을 직접 편집하는 것이라고 깨달았기 때문이다. 이런 상황에서 package-lock.json을 규범으로 간주하는 것은 가용성 악몽이 되었다.이것은 서로 경쟁하는 두 세계 간의 균형으로 현재의 행위가 최종적으로 이긴다.
이것이 바로 npm ci이 탄생한 원인이다. npm install의 행위는 사실상 사람들이 원하는 것이기 때문에 실천 중(그들이 실제로 이런 행위를 만났을 때), 그리고 npm ci은 좋은 고리가 있기 때문이다(이 때문에 결국 clean-install으로 거슬러 올라간다).
도움이 됐으면 좋겠어요!좋은 글!👍🏼
</div>

좋은 웹페이지 즐겨찾기