programing

npm 5에 의해 작성된 package-lock.json 파일을 커밋해야 합니까?

closeapi 2023. 4. 11. 22:02
반응형

npm 5에 의해 작성된 package-lock.json 파일을 커밋해야 합니까?

npm 5가 오늘 출시되었습니다.새로운 기능 중 하나에는 constallistic installation과 constalistic installation이 포함되어 있습니다.package-lock.jsonfilename을 클릭합니다.

이 파일은 소스 컨트롤에 보관되어야 합니까?

둘 다 소스 컨트롤로 유지되어야 하는및과 비슷하다고 생각합니다.

ㅇㅇ.package-lock.json는 소스 제어에 체크인하기 위한 것입니다. 5+ 를 사용하고 있는는, 에 npm 5+ 의 통지가 되는 일이 .created a lockfile as package-lock.json. You should commit this file.설명:

package-lock.json는, 이 npm 의 됩니다.node_modules "treepackage.json생성된 트리에 대해 설명합니다.이것에 의해, 이후의 인스톨에서는, 중간 의존 관계의 갱신에 관계없이, 같은 트리를 생성할 수 있습니다.

이 파일은 소스 저장소에 커밋되도록 설계되었으며 다음과 같은 다양한 용도로 사용됩니다.

  • 팀원, 배포 및 지속적인 통합이 정확히 동일한 종속성을 설치할 수 있도록 종속성 트리의 단일 표현을 설명합니다.

  • 로 " 수 있는 을 제공합니다.node_modules디렉토리 자체를 커밋하지 않아도 됩니다.

  • 판독 가능한 소스 제어 차이를 통해 트리 변경의 가시성을 향상시킵니다.

  • 또한 npm이 이전에 설치된 패키지에 대해 반복되는 메타데이터 해상도를 건너뛸 수 있도록 함으로써 설치 프로세스를 최적화합니다.

관한 사항1개package-lock.json게시할 수 없으며 최상위 패키지 이외의 장소에서 발견된 경우 무시됩니다.을 공유합니다.publishing.npm-shrinkwrap.json은 publishing.npm-shrinkwrap.json을 합니다.이 형식은 기본적으로 같은 파일이지만 공개가 가능합니다.CLI 툴을 도입하거나 실가동 패키지의 작성에 퍼블리케이션프로세스를 사용하지 않는 한 이 방법은 권장되지 않습니다.

다라면package-lock.json ★★★★★★★★★★★★★★★★★」npm-shrinkwrap.json되어 있습니다.package-lock.json완전히 무시됩니다.

네, 다음 작업을 수행합니다.

  1. 를 하다package-lock.json.
  2. CI와 로컬 개발 머신 모두에서 애플리케이션을 구축할 때 대신 사용

npm ci워크플로우에 필요한 것은package-lock.json.


★★★★의 큰 npm install으로, 「」 「」 「」 「」 「」 「」 「」 「」 「」 「」를 변환하는 경우가 .package-lock.json에 , ,는.npm ci는, 록 파일에 하고, 합니다.

  • package-lock.json ★★★★★★★★★★★★★★★★★」package.json되어 있지 않다
  • 그렇다면package-lock.json가 없습니다.

" " 를 실행합니다.npm install 특히 의 개발자가 에서는, 「Developer」, 「Developer」, 「Developer」의 일이 .package-lock.json은 완전히 했습니다.package-lock.json★★★★★★ 。

그러나 프로젝트의 의존성이 서로 다른 머신 간에 신뢰성 높은 방법으로 반복적으로 해결된다는 것을 신뢰할 수 있는 사용 사례가 있습니다.

package-lock.json정확히 알 수 있는 것은, 「일하는 것」입니다.

전전 without without without without가 없는 프로젝트가 .package-lock.jsonnpm-shrinkwrap.jsonyarn.lock임의의 의존관계로 인해 업데이트가 중단되기 때문에 빌드가 실패할 수 있는 파일입니다.

이러한 문제는 가장 최근에 작동한 버전을 추측해야 하는 경우가 있기 때문에 해결하기가 어렵습니다.

의존관계를 , 을 실행합니다.npm install {dependency}하려면 , 어느쪽인가를 합니다.npm update {dependency} ★★★★★★★★★★★★★★★★★」npm install ${dependendency}@{version} 바뀐 것을 저지른다.package-lock.json.

실패하면 하고 있는 상태로 수 .package-lock.json.


npm 문서를 인용하려면:

생성된 패키지 잠금을 소스 제어에 커밋할 것을 강력히 권장합니다.이것에 의해, 팀내의 다른 유저, 도입의 유저, CI/계속적인 통합, 및 npm 를 실행하고 있는 다른 유저도, 개발중의 것과 같은 의존 트리를 패키지 소스에 인스톨 할 수 있습니다.또한 이러한 변경에 따른 차이는 사람이 읽을 수 있으며 npm이 node_modules에 추가한 변경을 사용자에게 알립니다.따라서 transitional 의존관계가 업데이트되었는지, hoever되었는지 등을 알 수 있습니다.

그리고 vs의 차이에 대해서:

  • 프로젝트에는 기존 package-lock.json 또는 npm-shrinkwrap.json이 있어야 합니다.
  • 'Jonjson, json,npm ci는 패키지 잠금을 업데이트하는 대신 오류와 함께 종료됩니다.
  • npm ci는 한 번에 전체 프로젝트만 설치할 수 있습니다.개개의 종속성을 이 명령으로 추가할 수 없습니다.
  • 「」의 'node_modules으로 삭제됩니다.이치노npm ci을 사용하다
  • .package.json또는 패키지 패키지 설치: 설치는 기본적으로 중지됩니다.

참고: 비슷한 답변을 여기에 올렸습니다.

네, 체크인하려고 합니다.나는 그것만의 독특한 헌신을 제안하고 싶다.우리는 그것이 우리의 차이에 많은 잡음을 더한다는 것을 알게 되었다.

네, 체크인(YES, CHECK-IN)을 하는 것이 가장 좋습니다.

차이를 볼 때 많은 소음이나 갈등을 일으킬 수 있다는 것에 동의합니다.단, 다음과 같은 이점이 있습니다.

  1. 개발 환경과 Prod 환경 간에 모든 패키지의 동일한 버전을 보증합니다.이 부분은 다른 시기에 다른 환경에서 건축할 때 가장 중요합니다.사용할 수 있습니다.^1.2.3 안에서package.json, 매번 하게 할 수 방법은 무엇입니까npm install개발 머신과 빌드 서버, 특히 간접 의존성 패키지에서 동일한 버전을 선택할 수 있습니까? ②번.package-lock.json을 받아)를npm ci잠금 파일을 기반으로 패키지를 설치합니다.)
  2. 설치 프로세스를 개선합니다.
  3. 기능 「감사」에 이 됩니다.npm audit fix.

프로젝트에서는 이 파일을 커밋하지 않습니다.요점이 뭐야?

  1. 생성되었습니다.
  2. gitlab-ci.yml 빌드를 사용하는 gitlab에서 SHA1 코드 무결성 오류의 원인입니다.

제 패키지에 ^을 사용하지 않는 것은 사실이지만요.Json for libs는 내가 나쁜 경험을 했기 때문이다.

git diff를 할 때 소음에 대해 불평하는 사람들에게:

git diff -- . ':(exclude)*package-lock.json' -- . ':(exclude)*yarn.lock'

내가 한 일은 가명을 사용한 거야

alias gd="git diff --ignore-all-space --ignore-space-at-eol --ignore-space-change --ignore-blank-lines -- . ':(exclude)*package-lock.json' -- . ':(exclude)*yarn.lock'"

package-lock저장소(사용하는 의 diff에서 무시하려면 package-lock.json을 package-lock.json에 합니다..gitattributes:

package-lock.json binary
yarn.lock binary

이것에 의해, 「Binary files a/package-lock.json 와 b/package-lock.json 는 패키지 록 파일이 변경될 때마다 다릅니다.또한 일부 Git 서비스(특히 GitLab, GitHub 이외)도 이 작업을 할 때 온라인에서 볼 때 이러한 파일(더 이상 10,000줄 변경 없음!)을 차이에서 제외합니다.

네, 이 파일을 커밋할 수 있습니다.npm 공식 문서:

package-lock.json 、 is is is isations ations isationsations ationsationsations ations ations 、 모든 조작에 됩니다.npm node_modules "treepackage.json생성된 트리에 대해 설명합니다.이것에 의해, 이후의 인스톨에서는, 중간 의존 관계의 갱신에 관계없이, 같은 트리를 생성할 수 있습니다.

이 파일은 소스 저장소로 커밋됩니다.[ ]

아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 맞다package-lock.json.

「 」를 package-lock.json프로젝트의 모든 사람이 같은 패키지 버전이라는 것입니다.

장점:

  • 엄격한 버전 관리를 따르고 타사 패키지의 하위 호환성이 없는 변경으로부터 자신을 보호하기 위해 메이저 버전으로 자동 업데이트를 허용하지 않는 경우 패키지 잠금을 커밋하면 많은 도움이 됩니다.
  • 특정 패키지를 업데이트하면 해당 패키지는 package-lock.json으로 업데이트되고 저장소를 사용하는 모든 사용자가 변경 내용을 적용하면 해당 버전으로 업데이트됩니다.

단점:

  • 꺼내기 요구가 보기 흉할 수 있습니다. : )

npm install에서는, 프로젝트의 모든 사람이 같은 패키지 버전인 것을 확인할 수 없습니다. npm ci도움이 될 거야

package-lock.json을 글로벌하게 사용하지 않도록 설정합니다.

단말기에 다음을 입력합니다.

npm config set package-lock false

이건 정말 마법처럼 나에게 효과가 있어

모든 답변이 "YES"라고 답하지만 이는 프로젝트에 따라 다르기도 합니다.

package-lock.json의 중요한 세부사항 중 하나는 package-lock.json이 공개되지 않고 최상위 패키지 이외의 장소에서 발견된 경우 무시됩니다.

, , npm에 package-lock.json에 대해서는, 「」를 사용할 가 있습니다.package-lock.json레포에서 테스트 의존성 버전을 잠그고 의존성을 구축합니다.

단, 여러 패키지가 포함된 프로젝트를 관리하기 위해 lerna를 사용하는 경우에는package.json는 repo의되며, 각 에는 repo가 .npm init

.git
lerna.json
package.json
package-lock.json        <--- here
packages/a/package.json
packages/a/lib/index.js
packages/b/package.json
packages/b/lib/index.js

npm은 minimized/uglized css/js를 생성하고 django 어플리케이션에서 제공하는 페이지에 필요한 javascript를 생성하는 것입니다.내 어플리케이션에서는 Javascript가 페이지에서 실행되어 애니메이션을 작성하거나 가끔 Ajax 호출을 수행하거나 VUE 프레임워크 내에서 작업하거나 css와 작업합니다.package-lock.json이 패키지의 내용을 보다 우선적으로 제어할 수 있는 경우.json, 그러면 이 파일의 버전이 하나 있어야 할 수도 있습니다.지금까지의 경험으로는 npm install에 의한 인스톨에 의한 인스톨에는 영향을 주지 않거나, 인스톨 했을 경우, 지금까지의 애플리케이션에는 악영향을 주지 않았습니다.저는 mongodb 등 기존 신 클라이언트 어플리케이션을 사용하지 않습니다.

package-lock.json을 repo에서 삭제한 이유는 npm 설치는 이 파일을 생성하기 때문입니다.npm 설치는 앱을 실행하는 각 서버에서 전개 프로세스의 일부이기 때문입니다.각 서버에서는 node와 npm의 버전 관리가 수동으로 이루어지지만, 동일하다고 생각합니다.

npm installpackage-lock.json으로 지정합니다.서버상의 repo에 의해 기록된 파일에 변경이 있을 경우 다음 전개에서는 원본에서 새로운 변경을 가져올 수 있습니다. package-lock.json.의 수 .

로컬로 생성된 package-lock.json을 repo(하드 오리진 마스터 리셋)에 있는 것으로 덮어쓸 수도 없습니다.package-lock.json이 npm 설치로 인해 node_modules에 있는 내용을 반영하지 않으면 npm이 불만을 제기하여 전개가 중단되기 때문입니다.이것이 node_modules에 약간 다른 버전이 설치되어 있는 것을 나타내는 경우, 다시 한 번 문제가 발생한 적이 없습니다.

node_modules가 repo에 없는 경우(그럴 필요가 없습니다), package-lock.json은 무시해야 합니다.

부족한 점이 있으면 코멘트로 정정해 주세요만, 이 파일로부터 버젼을 취득하는 것은 의미가 없습니다.파일 패키지json에는 버전 번호가 포함되어 있습니다.이 파일은 npm 설치 시 패키지 작성에 사용되는 것으로 생각됩니다.이 파일을 삭제하면 npm 설치에서 다음과 같이 불만이 제기됩니다.

jason@localhost:introcart_wagtail$ rm package.json
jason@localhost:introcart_wagtail$ npm install
npm WARN saveError ENOENT: no such file or directory, open '/home/jason/webapps/introcart_devtools/introcart_wagtail/package.json'

빌드는 실패하지만 node_modules를 설치하거나 npm을 적용하여 js/css를 빌드할 때 package-lock.json을 삭제해도 불만이 발생하지 않습니다.

jason@localhost:introcart_wagtail$ rm package-lock.json 
jason@localhost:introcart_wagtail$ npm run dev

> introcart@1.0.0 dev /home/jason/webapps/introcart_devtools/introcart_wagtail
> NODE_ENV=development webpack --progress --colors --watch --mode=development

 10% building 0/1 modules 1 active ...

package-lock.json을 소스 코드 버전컨트롤에 커밋하는 것은 프로젝트가 package.json에 정의된 것과 일치하거나 일치하지 않는 특정 버전의 의존관계를 사용하는 것을 의미합니다.단, 의존관계에는 Carlet(^)과 Tilde(~)가 없는 특정 버전이 있습니다.즉, 종속성이 최신 버전으로 업데이트되지 않습니다.npm 설치는 현재 버전의 Angular에 필요한 버전과 동일한 버전을 선택합니다.

주의: CI에서 갱신되는 의존관계에 Carlet(^)과 Tilde(~)를 추가한 경우 package-lock.json을 커밋할 것을 강력히 권장합니다.

언급URL : https://stackoverflow.com/questions/44206782/do-i-commit-the-package-lock-json-file-created-by-npm-5

반응형