Fall in IT.

package-lock.json, yarn.lock 에 대해서 본문

프로그래밍언어/Javascript & Typescript

package-lock.json, yarn.lock 에 대해서

D.Y 2021. 11. 24. 11:58

안녕하세요.

 

오늘은 자바스크립트 개발을 하다보면 보게되는 파일인 package-lock.json, yarn.lock 파일에 대해서 알아보겠습니다.

 

package.json 파일은 무엇인가?

package.json 파일은 프로젝트에서 사용된 패키지 의존성 관리를 도와준다.

 

자바스크립트에서는 패키지 매니저로 npm 또는 yarn을 사용한다.
(패키지 매니저는 자바스크립트 프로젝트에서 특정 패키지를 설치하거나 삭제하는데 사용되는 도구를 말한다.)

이때, 설치된 패키지들의 종류와 버전이 package.json 파일에 적혀서 관리된다.

 

그렇다면 package-lock.json 파일은 무엇인가?

패키지 설치시점과 상관없이 모두 동일한 패키지를 설치할 수 있도록 도와준다. (이를 패키지 잠금 기능이라고 부른다)

 

package.json 파일에 패키지 종류와 버전이 적혀있다면 동일한 패키지가 설치되는거 아닌가?

아니다. package.json 파일만 가지고는 모두 동일한 버전의 패키지가 설치되지 않을 수 있다.

 

예를들면, package.json 파일에는 "react": "^16.8.3" 과 같이 되어있다고 하면 16.8.3 ~ 17.0.0 미만의 패키지가 자동으로 설치된다.

즉, 설치 시점에 따라 다른 버전의 패키지가 설치될 수 있고 이상 동작이 생길 수 있게 된다.

 

package-lock.json에는 설치 된 패키지의 특정 버전까지 명시되어 있기 때문에 어느 시점에 설치하더라도 동일한 버전의 패키지가 설치된다.

 

yarn.lock은 무엇인가?

패키지 매니저로 yarn을 사용할때 package-lock.json과 같이 패키지 잠금을 도와주는 파일이다.

 

결론

pakcage-lock.json과 yarn.lock 파일은 설치 시점에 관계없이 모두 동일한 패키지가 설치되도록 도와준다.

 

참조

https://docs.npmjs.com/cli/v8/configuring-npm/package-lock-json

https://www.daleseo.com/js-package-locks/

https://zereight.tistory.com/993

 

Comments