상세 컨텐츠

본문 제목

package.json과 package.lock.json는 어떻게 다를까?

react

by 리액트바오 2023. 6. 30. 16:22

본문

 

package.json과 package-lock.json은 Node.js 프로젝트에서 사용하는 두 가지의 파일이다.

이 파일들은 프로젝트의 종속성(dependencies)과 관련된 정보를 저장하는데, npm(Node Package Manager)이나 Yarn 등의 패키지 매니저를 사용하여 종속성을 관리하는 데 도움을 준다.

 

 

 

여기서 잠깐!

1. 지금껏 npm install을 하면서 npm이 그냥 이름인줄 알았다. 아니 ‘이름인줄 알았다’ 고 생각 했다기보단 별 생각 없이 썼던것 같다.ㅋㅋㅋㅋ Node Package Manager의 약자였다니! 새롭게 알게 되니 반갑구만!

 

2. 종속성(dependencies)디펜던씨 어쩌고도 개발을 하면서 참 많이 듣는데, 데이터의 종속성이라는것은 프로그램의 구조가 데이터의 구조에 영향을 받는 것을 의미한다.

 

그럼 package.json과 package-lock.json은 각각 무엇을 하는지 따로 정리해보겠다.

 

 

 

package.json:

  • 프로젝트의 기본 정보와 메타데이터를 정의하는 파일이다. (메타데이터란, 어떤 목적을 가지고 만들어진 데이터라는 뜻)
  • 프로젝트의 이름과 버전, 저자, 라이선스 등과 같은 정보를 포함한다.
  • 프로젝트에 필요한 외부 패키지(dependencies)와 개발 시에만 필요한 패키지(devDependencies)를 정의한다.
  • 종속성은 버전 범위(예를들어 "^1.2.0") 또는 정확한 버전(예를들어 "1.2.3")으로 정의됩니다.
  • 개발자가 직접 수정할 수 있으며, 패키지 관리 도구(npm 또는 Yarn)를 사용하여 종속성을 추가, 업데이트 하거나 제거할 수 도 있다.

 

package-lock.json:

  • 프로젝트의 정확한 종속성 트리와 버전 정보를 포함하는 파일이다.
  • npm이 자동으로 생성되고 유지하며, 일반적으로 직접 수정하지 않는 파일이다.
  • 각 종속성의 정확한 버전이 기록되어 있어, 프로젝트의 일관성과 종속성 설치 시 일치하는 버전을 보장한다.
  • 프로젝트의 종속성을 재설치할 때 사용되며, 패키지 관리 도구는 package-lock.json을 참조하여 정확한 종속성 버전을 설치한다.
  • 여러 사용자가 동일한 종속성을 설치하고 동일한 패키지 버전을 사용할 수 있도록 하는 역할을 한다.

 

 

 

다시말해, package.json은 프로젝트의 메타데이터와 종속성을 정의하는 파일이며, 내가 직접 수정을 할 수 가 있다.

반면에 package-lock.json은 npm이 자동으로 생성 및 관리하는 종속성 트리와 버전 정보를 담고 있으며, 주로 프로젝트의 일관성과 종속성 설치 시 일치하는 버전을 보장하는 데 사용된다.

 

 

 

 

package.json과 package-lock.json의 주요한 차이점은

  1. 종속성 정의 방식:
    • package.json 파일은 프로젝트의 기본적인 정보와 종속성에 대한 메타데이터를 포함한다.
    • package-lock.json 파일은 정확한 종속성 트리와 버전 정보를 포함한다. 프로젝트의 일관성과 종속성 설치 시 일치하는 버전을 보장하는 데 사용이 된다.

 

  1. 파일 생성과 수정:
    • package.json 파일은 개발자가 직접 수정할 수 있다. 종속성을 추가하거나 업데이트 또는 제거할 수 있다.
    • package-lock.json 파일은 주로 npm이 자동으로 생성하고 유지한다.

 

  1. 용도와 사용 시점:
    • package.json 파일은 프로젝트의 기본 정보와 종속성을 정의하기 위해 사용된다. 일반적으로 프로젝트 초기에 작성되고 프로젝트의 설정, 스크립트, 플러그인 등에 대한 정보도 포함될 수 있다.
    • package-lock.json 파일은 주로 프로젝트의 종속성을 설치하거나 업데이트할 때 사용된다. 이 파일은 정확한 종속성 버전을 보장하여 여러 사용자가 동일한 종속성을 설치하고 동일한 패키지 버전을 사용할 수 있도록 합니다.

 

 

 

 

요약하자면, package.json은 프로젝트의 기본 정보를 정의하고, 개발자가 직접 수정할 수 있다. 반면에 package-lock.json은 npm이 자동으로 생성하며, 정확한 종속성 트리와 버전 정보를 포함한다.

 

 

 

오옹 그렇구나!

관련글 더보기