Package Managers - npm, yarn 그리고 패키지 버전 잠금에 관하여

무네·2022년 1월 28일
0
post-thumbnail
post-custom-banner

What is package managers?

패키지 관리자는 프로젝트가 의존하고 있는 패키지들을 효과적으로 설치, 업데이트, 삭제할 수 있도록 도와주는 관리 도구이다.

JavaScript의 주요한 패키지 매니저로는 npmyarn이 있다.
대부분의 자바스크립트 패키지 매니저는 Node.js 런타임에서 돌아가며 package.json이라는 파일에 프로젝트가 의존하고 있는 패키지 목록을 명시한다.
일반적으로 패키지는 프로젝트 내의 node_modules 디렉토리에 저장된다.

npm

  • npm(Node Package Manager)은 Node.js의 표준 패키지 관리자로, Node.js 런타임을 설치할 때 기본으로 함께 설치된다. 별도 설치가 필요 없어, 쉬운 접근이 가능하다.
  • package-lock.json 파일을 통해 패키지 버전 잠금을 지원한다.

yarn

  • yarn(Yet Another Resource Negotiator)은 Facebook에서 만든 패키지 관리자이다.
  • npm보다 빠르다.
  • yarn.lock 파일을 통해 패키지 버전 잠금을 지원한다.

패키지 버전 잠금이란?

개발 할 때 필요한 패키지의 버전들이 설치 시점에 따라 달라지면 문제가 생길 수 있으므로(ex. 팀원마다 설치 시점이 다름) 의존성 패키지를 어느 환경에서든 항상 동일한 버전으로 설치할 수 있게 하는 것

어떤 방식으로 그게 되는건데?

  1. npm 또는 yarn을 통해 프로젝트에 새로운 패키지를 설치하면 package.json에 해당 패키지가 등록되고, 패키지 잠금 파일이 생성된다.
  2. 패키지 잠금 파일에는 프로젝트에 패키지가 최초로 추가될 때의 버전 이 기록된다.
  3. 패키지 잠금 파일이 생성된 이후에는 yarn add와 같은 명령어를 수행해도 npm registry에 있는 최신 버전이 설치되지 않고, 패키지 잠금 파일에 있는 버전으로 설치된다.
  4. 패키지 잠금 파일도 git push하여, 다른 팀원들도 패키지 잠금 파일에 기록되어 있는 버전을 기준으로 패키지를 설치할 수 있다.

패키지 버전 잠금 시 주의 사항

  • 프로젝트를 최초로 설정하는 개발자는 패키지 잠금 파일을 무조건 git에 올려야 한다.
  • 패키지 잠금 파일은 새로운 패키지가 설치, 업데이트, 제거될 때 패키지 매니저가 package.json과 동기화 해주므로, 개발자가 직접 수정할 필요도 없고 하면 안 된다.
  • 신규 패키지를 설치하거나 갱신/제거한 개발자는 package.json과 패키지 잠금 파일을 반드시 함께 커밋해야 한다.

References

https://www.daleseo.com/js-package-locks/
https://velog.io/@zwonlala/TIL-yarn.lock%EC%9D%98-%EC%9A%A9%EB%8F%84

profile
궁금한 건 정말 참을 수 없어
post-custom-banner

0개의 댓글