본문 바로가기

Development

Npm vs Yarn

반응형

Package Manager

패키지 매니저는 패키지의 설치, 업데이트, 삭제를 편리하고 안전하게 수행하기 위해 사용되는 툴이다. Node.js의 대표적 패키지 매니저로는 npm과 yarn이 있다. 먼저 npm에 대해 알아보자.

npm

npm은 자바스크립트 런타임 환경인 Node.js의 기본 패키지 관리자이다. 전세계적으로 가장 많은 자바스크립트 개발자들이 사용하는 패키지 매니저이다. npm의 등장으로 개발자는 새로운 기능을 추가할 때 코드를 직접 작성하거나 github를 통해 다운로드하지 않아도 되게 되었다.

그런데 npm의 다운로드 수가 계속해서 늘어나면서 사용자가 많아질 수록 몇 개의 문제를 마주쳤다.

대표적인 예로는 의존성 문제가 있다. 개발자들이 동일한 패키지의 다른 버전을 사용하는 경우가 생겼다. 개발자 A는 패키지 다운 후 업데이트를 했지만, 개발자 B는 패키지 업데이트를 하지 않았기 때문이다.

이런 상황에서 페이스북이 새로운 패키지 매니저를 내놓았다.

yarn

2016년 페이스북은 새로운 자바스크립트 패키지 매니저로 yarn을 발표했다. yarn은 기본적으로 npm의 단점을 보고 이를 향상시키기 위해 만들어진 매니저 툴인데, 여기서 말하는 npm의 단점으로는 속도, 의존성 등이 있다.

속도

yarn은 다운받은 패키지를 cache에 저장하여, 중복된 패키지는 다시 다운로드 하지않고 캐싱된 데이터를 사용한다. 따라서 패키지 다운 속도가 npm보다 상대적으로 빠르다.

또한 여러개의 패키지를 설치할 때 순차적으로 처리하는 npm과 달리 yarn은 병렬로 처리하기 때문에 performance와 speed가 높다.

2016년, 2017년 즈음에는 yarn의 speed와 performance과 확연하게 npm보다 우수했다. 하지만 현재는 아주 근소한 차이만 보인다.

의존성

npm이 설치 순서에 따라 개발자마다 의존성 트리가 달랐던 문제를 yarn은 yarn.lock 파일을 자동으로 생성하게끔 바꿔서 신뢰성있고 일관적이게 생성되도록 개선하였다. 자동으로 생성되는 lock 파일은 각 패키지의 버전에 따른 체크섬(checksum) 값을 가졌기 때문에 어떤 환경에서든 해당 프로젝트의 사용자가 동일한 패키지를 설치하는 것이 가능하게 되었다.

 

 

출처

https://velog.io/@yunsungyang-omc/NPM-vs-Yarn

https://velog.io/@kysung95/개발상식-npm과-yarn

https://www.cleancoder.dev/package-manager-history

 

반응형