package-lock.json을 github에 올린다는것...

여리·2023년 10월 23일
1

github는 나를 위해서도 사용할 수 있지만 VCS(version control system)가 핵심인 부분이다.
버전관리 시스템을 사용한다는 것은 협업의 핵심 요소중의 하나이기도 하다.

버전관리 시스템 안에서도 제목에서 보이는것과 같이 package-lock.json은 JS를 사용하는데 있어서 필수적으로 존재할 수 밖에 없는 파일이다.

package-lock.json

  • 생성된 node modules 폴더의 정보를 담고있는 파일
  • npm을 사용해서 node_modules 트리나 package.json 파일을 수정하게 되면 자동으로 생성/수정
  • package-lock.json 파일이 생성되는 시점의 의존성 트리에 대한 정확한 정보를 포함

node의 third-party-package(또는 module)을 사용하는데 있어서 꼬리표로 따라올 수 밖에 없는 필수적인 내용이다.

협업을 하는데 있어서 package-lock.josn은 협업을 하는 구성원들과에 대해서 선택사항이 발생한다.

가장 큰 장점이자 단점은 협업하는 사람들과의 패키지 버전관리를 제어한다는것.

  • 장점 : 사람들과의 협업에서 모듈의 버전을 고정적으로 사용해서 버전충돌을 막을 수 있다.
  • 단점 : 사람들과의 협업에서 모듈의 버전을 고정적으로 사용해서 패키지의 다른 버전의 활용할 수 있는 기능을 사용할 수 없다.

우선 제목내용의 요점은 이것이다.

										package-lock.json
              				github remote 저장소에 올린다 VS 올리지 않는다.

결론을 우선적으로 얘기하자면 이건 협업을하고자 하는 사람들과의 약속이 있다면 그에 맞도록 운영하고 팔로우를 하면 된다.

대부분의 사람들은 package-lock.json을 협업 저장소에 넣는것을 권장하는 편이다.
이를 근거로한 예시의 시나리오 두개를 퍼왔다

시나리오 1: PACKAGE-LOCK.JSON 파일을 소스 저장소에 커밋하지 않은 경우

박과장이 npm으로 프로젝트를 만들어서 git에 소스코드를 push 합니다. 이 때 node_modules 폴더를 제외하고 package.json 파일만 커밋합니다.
김대리는 소스 코드를 pull 하고 npm install을 실행합니다.
의존성 트리의 일부 버전이 박대리와 다르게 설치됩니다.
프로그램 실행시 오류가 발생합니다.
김대리는 오늘도 야근을 합니다.

시나리오 2: PACKAGE-LOCK.JSON 파일을 소스 저장소에 커밋한 경우

박과장이 npm으로 프로젝트를 만들어서 git에 소스코드를 push 합니다. 이 때 node_modules 폴더를 제외하고 package.json 파일과 package-lock.json 파일을 같이 커밋합니다.
김대리는 소스 코드를 pull 하고 npm install을 실행합니다.
의존성 트리가 박대리가 셋팅한 환경과 동일하게 설치됩니다.
프로그램이 정상적으로 실행됩니다.
김대리는 정시 퇴근을 합니다.
참조링크 : https://hyunjun19.github.io/2018/03/23/package-lock-why-need/

이정도면 요약이 됐으려나..........???????????

profile
beckend developer

1개의 댓글

comment-user-thumbnail
2025년 2월 17일

오호 무조건이겠군요.. 정시 퇴근이라니..

답글 달기