package.json 대 package-lock.json: 둘 다 필요합니까?

짧은 대답은 아니오입니다. 둘 다 필요하지는 않지만 둘 다 원할 수도 있습니다!

패키지.json



프로젝트에서 NPM(노드 패키지 관리자)을 사용하는 경우 코드 베이스 어딘가에 package.json 파일이 있습니다.

package.json 파일은 앱에 필요한 다양한 종속성의 최소 버전을 기록합니다. 코드의 공동 작업자가 npm install 설치하는 경우 종속성 버전은 package.json 또는 더 높은/최신 버전에 명시된 버전이 됩니다. 특정 패키지의 버전을 업데이트하는 경우 변경 사항이 반드시 여기에 반영되는 것은 아닙니다.

package.json 파일은 종속성 이상의 용도로 사용됩니다. 또한 프로젝트 속성, 설명 및 라이센스 정보를 정의하는 데 사용됩니다.

{
  "name": "My-Home-Page",
  "version": "1.0.0",
  "license": "UNLICENSED",
  "author": "Sarah",
  "description": "Sarah's Homepage",
  "keywords": [
    "Home Page",
    ""
  ],
  "homepage": "https://myHomePage.com",
  "repository": {
    "type": "git",
    "url": "https://github.com/YOURREPO"
  },

  "scripts": {
    "start": "gulp startlocal",
  },
  "engines": {
    "node": "^10.2.0",
    "npm": "~6.5.0"
  },
  "dependencies": {
    "angular": "1.8.0",
    "angular-material": "1.4.20",
    "c3": "0.6.11",
    "d3": "3.6.6",
    "jquery": "3.6.7",
    "md5": "2.0.2",
  },


package.json 예제를 보면 ^~ 가 있습니다. 종속성 버전 이전^은 누군가가 프로젝트를 복제하고npm install 실행하면 최신 마이너 버전을 설치해야 한다고 npm에 알려줍니다. ~가 있는 경우 최신 패치 버전으로 업데이트됩니다. 동일한 프로젝트의 공동 작업자가 모두 다른 종속성 버전에 있을 수 있으므로 이로 인해 문제가 발생할 수 있습니다.

패키지 잠금.json



package.json 파일이 몇 가지 다른 용도로 사용되는 경우 package-lock.json 파일은 부 버전 및 패치 버전을 포함하여 특정 버전 번호에 종속성을 "고정"하는 데만 사용됩니다. package.json 파일의 ^~를 무시합니다. 이 파일은 설치된 각 패키지의 정확한 버전을 추적하므로 향후 설치에서 동일한 종속성 트리를 작성할 수 있습니다.

이는 종속성이 많은 일부 대규모 애플리케이션 공간에서 중요합니다. 일부 종속성 버전은 서로 잘 작동하지 않으므로 버전을 "고정"하면 많은 문제가 발생하는 것을 방지할 수 있습니다. 이것은 하나의 코드 기반에서 여러 개인이 공동 작업하는 경우에 특히 유용합니다. 이런 식으로 6개월 간격의 공동 작업자npm install는 동일한 버전이 설치되는 것을 보게 됩니다.

그럼 둘 다 필요하지 않습니까?



다음은 short answer입니다.
package-lock.json과 package.json이 모두 필요합니까? 아니.
package.json이 필요합니까? 예.
package-lock.json만 있는 프로젝트를 가질 수 있습니까? 아니.

둘 다 유지해야 하나요?



당신이해야 할 좋은 기회가 있습니다! 특히 필요에 따라 종속성 업그레이드를 유지하는 경우. 모든 환경에서 동일한 결과를 생성하는 데 도움이 되므로 많은 공동 작업자와의 작업 흐름이 훨씬 쉬워집니다.

package-lock.json에 대한 변경 사항도 커밋하여 배포 시 npm이 로컬/테스트 환경에서 가져오는 것과 동일한 패키지를 가져오도록 합니다.

더 많은 정보



package.json 대 package-lock.jsonthis에 대한 자세한 정보를 원하면 훌륭한 리소스입니다.

NPM 감사 및 프로젝트 종속성의 알려진 취약점 확인에 대해 읽을 수 있습니다.

좋은 웹페이지 즐겨찾기