package-lock.json 파일

package-lock.json 생성되는 시점의 의존성 트리(node_modules)에 대한 정보를 가지고 있는 파일

// package.json

"dependencies": {
    "axios": "^1.6.2"
}
# yarn.lock

axios@^1.6.2:
  version "1.6.2"
  resolved "<https://registry.yarnpkg.com/axios/-/axios-1.6.2.tgz#de67d42c755b571d3e698df1b6504cde9b0ee9f2>"
  integrity sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==
  dependencies:
    follow-redirects "^1.15.0"
    form-data "^4.0.0"
    proxy-from-env "^1.1.0"

package-lock.json 파일을 사용하는 이유

이 파일은 소스 리포지토리에 커밋하기 위한 것이며 다양한 용도로 사용됩니다.

팀원, 배포 및 지속적 통합이 정확히 동일한 종속성을 설치하도록 보장하는 종속성 트리의 단일 표현을 설명

사용자가 디렉토리 자체를 커밋하지 않고도 node_modules의 이전 상태로 "시간 여행"할 수 있는 기능을 제공

읽을 수 있는 소스 제어 diff를 통해 트리 변경 사항을 더 쉽게 볼 수 있습니다.

그리고 npm이 이전에 설치된 패키지에 대해 반복되는 메타데이터 확인을 건너뛸 수 있도록 하여 설치 프로세스를 최적화합니다.

"dependencies": {
    "axios": "^1.6.2",
    "lodash": "^4.17.21" // <- 버전의 범위
}

npm install or yarn install

lodash@^4.17.21:
  version "4.17.21" # 버전의 범위 안에서 설치된 결과
  resolved "<https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c>"
  integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==

이렇게 버전의 범위 안에서 설치가 되면 현재는 1.3.1 버전이 설치되지만, lodash의 버전이 업데이트된 상태로 publish가 된 후에, 동일한 package.json 파일로 npm install을 실행했을 경우, 원래 버전이 아닌, 새로 업데이트된 버전으로 lodash로 설치가 됩니다.

이렇게 A는 1.3.1을 사용하고 이 package.json 파일을 이용해서 설치한 다른 사람은 다른 버전으로 사용하기에 만약 서로 버전에서 소스코드가 호환이 안된다면 에러가 나게 되고 다른 모듈과 버전 충돌이 일어날 수도 있다. 이러한 문제를 해결하기 위해서 package-lock.json을 사용합니다.

axios@^1.6.2:
  version "1.6.2"
  resolved "<https://registry.yarnpkg.com/axios/-/axios-1.6.2.tgz#de67d42c755b571d3e698df1b6504cde9b0ee9f2>"
  integrity sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==
  dependencies:
    follow-redirects "^1.15.0"
    form-data "^4.0.0"
    proxy-from-env "^1.1.0"

resolved

번들 종속성의 경우 소스에 관계없이 포함되지 않습니다.

레지스트리 소스의 경우 레지스트리 URL과 관련된 tarball의 경로입니다. tarball URL이 레지스트리 URL과 동일한 서버에 있지 않으면 완전한 URL입니다.

integrity

이것은 이 자원에 대한 표준 하위 자원 무결성입니다.