상세 컨텐츠

본문 제목

package-lock.json이란?

Programming/Concept

by 쌩우 2019. 7. 11. 13:47

본문

package-lock.json

package-lock.json은 npm을 사용하여 package.json 파일 또는 node_modules 트리를 수정하면 자동으로 생성되는 파일이다.
파일이 생성되는 시점의 의존성 트리에 대한 정보를 가지고 있다.

package-lock.json 파일이 꼭 필요한 이유

package.json 파일의 의존성 선언(dependency)에는 version range가 사용된다.
이것은 특정 버전이 아니라 버전의 범위를 의미한다.
예를 들어 npm install express를 실행하면 package.json 파일에는 “^4.16.3”(Caret Ranges)로 버전 범위가 추가된다.
이 package.json 를 기반으로 npm install을 실행하면 현재는 4.16.3 버전이 설치되지만 새롭게 express의 마이너 패치가 이루어진 버전이 퍼블리시 되어 있다면 동일한 package.json 파일로 npm install을 실행해도 4.16.4, 이나 4.17.1 같은 다른 버전이 설치될 수 있다.

동일한 package.json이 서로 다른 node_modules를 만들게 되는 경우

  1. npm 버전 차이
  2. 의존성을 가진 패키지의 버전이 업그레이드 되는 경우
  3. 의존성을 가진 패키지가 의존하고 있는 패키지의 버전이 업그레이드 되는 경우

의존성 패키지 관련 경우

{
    "name": "App",
    "version": "0.1.0",
    "dependencies": {
        "depth_0": "^1.0.0"
    }
}
//App은 depth_0이라는 패키지에 의존성 가진다
{
    "name": "depth_0",
    "version": "0.1.0",
    "dependencies": {
        "depth_1": "^1.0.0"
    }
}
//App이 의존성을 가진 depth_0이, depth_1이라는 패키지에 의존성을 가진다

이 때, depth_1의 package.json은 다음과 같다.

{
    "name": "depth_1",
    "version": "1.0.0"
}

해당 설정의 node_modules 구조는 아래와 같다.

App@0.1.0 
    `-- depth_0@1.0.0 
        `-- depth_1@1.0.0

추가 입력 필요

<참고자료>

https://trustyoo86.github.io/npm/2018/01/10/package-lock-introduction.html

 

kern의 FE-Note

kern의 Front-end 개발 노트입니다.

trustyoo86.github.io

 PACKAGE-LOCK 관련 CASE STUDY

  • 배포시에는 package에 관련된 종속성을 고정시키기 위해 package-lock.json을 사용해야할 때가 있습니다.
  • 따라서, 운영에 있는 개발자는 package lock을 건 후, package-lock.json을 git에 업데이트 하게 됩니다.
  • 개발자들이 일일이 npm install을 한 후 실행하는 것이 어려우므로, npm install 및 빌드 command를 package.json의 scripts에 포함시키는 경우가 있습니다.
  • 하지만, 해당 프로젝트를 개발하는 개발자들은 개발자들 각자의 pc에서 npm install을 설치시에, package-lock.json이 자동으로 생성됩니다.
  • 자동으로 생성되는 package-lock.json으로 인해 git에 업데이트 항목으로 계속해서 노출됩니다.
  • 이러한 상황에서 개발자들은 두가지 옵션을 사용하고 있었습니다.
    1. npm config package-lock false를 통해 package-lock을 실행하지 못하도록 하거나, npmrc에 해당 property를 추가합니다.
    2. git에 push를 할 때마다 package-lock.json을 삭제합니다.
  • 해당 사항을 수정하기 위해 개발모드인 경우 scripts 또는 command 실행시에 npm install에 관련되어 —no-package-lock command를 같이 추가합니다.

'Programming > Concept' 카테고리의 다른 글

마크다운 markdown  (1) 2019.07.16
Bootstrap 부트스트랩  (0) 2019.07.11
Switch, case 문  (0) 2019.07.03
MongoDB - NOSQL  (0) 2019.06.29
AWS(Amazon Web Service)  (0) 2019.06.28

관련글 더보기

댓글 영역