jhhan의 블로그

package-lock.json 이란? 본문

Vue.js

package-lock.json 이란?

jhhan000 2021. 2. 21. 22:38

이번 포스트에서는 package-lock.json에 대해서 알아보겠습니다.

 

사실 이 글을 vue.js 카테고리에 넣는게 맞나 하는 생각이 들기도 합니다.

하지만 package-lock.json이라는 파일이 사용되는 곳이 

일단 저한테는 vue.js를 사용할 때입니다.

그래서 이 카테고리에 넣었습니다.

 

일단 vue.js 프로젝트를 하나 만들었을 때의 구조입니다.

package.json과 package-lock.json 파일이 2개 다 보이죠.

 

일단 먼저 package.json에 대해서 먼저 알아봐야 겠네요.

package.json

  • 프로젝트의 정보 정의
  • 의존하는 패키지 정보를 표시

이런 파일입니다.

그리고

  • 프로젝트 정보 : name, version
  • 패키지 정보    : dependencies, devdependencies

가 됩니다.

여기서 패키지 정보가 중요한데요.

  • dependencies : 프로덕션 환경에서 응용 프로그램 개발에 필요한 패키지
  • devdependencies : 로컬 개발 & 테스트에서 필요한 패키지

이렇게 됩니다.

package.json은 이렇게 알아두시면 큰 문제는 없을 것 같네요.

 

그럼 package.json에 프로젝트 정보, 패키지 정보가 다 들어가는데

package-lock.json 파일은 왜 필요할까요?

package.json 파일만으로는 정보가 부족해서 ... 라고 합니다.

 

package.json에는 버전정보를 저장할 때 version range를 사용합니다.

version range는 특정 버전이 아닌 버전의 범위를 의미합니다.

그리고 package.json을 이용해서 npm install을 진행하더라도 

몇가지 문제로 인해 다른 node_modules 가 생성되는 경우가 있습니다.

  • npm 버전이 다른 경우
  • version range에 제대로 버전을 명시하지 않은 경우
  • 패키지가 새로운 버전이 배포된 경우 

3가지 입니다.

그래서 package.json이 동일하더라도 개발 테스트가 어떤 컴퓨터에서는 잘 되고, 어떤 컴퓨터에서는 잘 안될 수 있습니다.

 

package-lock.json은 package.json이 수정되거나 node_modules의 구조가 변경될 때 

당시의 의존성에 대한 정확하고 구체적인 정보를 가지고 자동 생성이 됩니다.

또한 package-lock.json 파일이 존재하는 경우에는 

package.json파일을 이용하지 않고 node_modules 파일을 생성합니다.

 

결국 package-lock.json이라는 파일은

동일한 node_modules를 생성하게 해줘서 같은 의존성을 설치할 수 있게 보장하는 파일입니다.

협업을 해야하는 개발자들에게는 필수 파일이 되는 것이죠 ㅎㅎ

그렇게 때문에 commit 시 package-lock.json 파일도 같이 올리도록 해야합니다.

 

 

 

이렇게 package-lock.json파일에 대해서 알아봤습니다.

이 파일은 왤케 많은 내용을 포함하고 있나 하는 궁금증은 있었는데,

이렇게 해결하게 되네요. ㅎㅎ

그럼 이만...

 

참고한 사이트입니다.

junwoo45.github.io/2019-10-02-package-lock/

'Vue.js' 카테고리의 다른 글

Vue.js - 새로 알게 된 내용들 정리  (0) 2022.08.30
vue.js 다시 시작해보기  (0) 2022.08.25
Vue.js - Excel Download 바로 처리하기  (3) 2021.02.14
ESLint Error 혹은 Warning 관련  (0) 2020.11.19
Vuetify(4)  (2) 2020.07.07