프로젝트를 진행할 때 많이 쓰는 패키지 관리 툴로는 대표적으로 npm과 yarn이 있다.
이번 포스팅에서는 두가지를 비교해보고자 한다.
자바스크립트 런타임 환경인 Node.js의 패키지 관리자이다.
개발자들이 자바스크립트로 만든 다양한 패키지들을 올리면 npm, yarn과 같은 패키지 관리자를 통해 설치 및 삭제가 가능하다.
이름 그대로 '노드 패키지 매니저'로, Node.js의 기본 패키지 관리자이다.
런타임 동안 노드 환경에서 쓰이는 다양한 패키지들을 관리한다.
react와 같은 프로젝트를 진행하며 겪었던 npm의 단점들을 개선하기 위해 Facebook에서 개발한 패키지 관리자이다.
yarn은 npm이 사용하는 동일한 npm 구조에 의존한다.
npm 레지스트리와 호환하면서 속도나 안정성 측면에서 npm보다 향상되었다.
가장 중요한 차이점 중 하나는 패키지 설치 프로세스를 처리하는 방법이다.
npm은 패키지를 한 번에 하나씩 순차적으로 설치한다.
반면에 yarn은 패키지를 동시에 가져오고 설치하도록 최적화되어 있어 속도 면에서 크게 향상된다.
(하지만 npm 5.0 버전은 그 아래 버전들보다 5배는 더 빠르다고 npm 개발자들이 언급하였다고 한다. 그 이후 npm V6.10.1과 yarn V1.17.3으로 install 속도 실험을 했는데, yarn이 승리하였지만 그 차이는 아주 근소한 차이라고 하여서, 이제는 거의 차이가 없어졌다고 볼 수 있는 문제인 것 같다.)
yarn은 패키지의 동일한 버전을 사용하여 보얀 취약점에 대한 위험성을 줄이는 "lockfile" 기능을 제공한다.
npm도 이제 이러한 기능을 제공하지만, yarn이 더 오래 전부터 제공해왔기 때문에 많은 사용자가 yarn을 선호한다.
yarn은 로컬 캐시를 유지하여 빠른 패키지 설치와 업데이트를 가능하게 한다.
npm도 캐시를 사용하지만, yarn의 캐시 시스템이 더 효율적이다.
다.
결론적으로, npm과 yarn은 모두 유용한 도구이다.
진행하는 프로젝트에 따라, 개발자의 취향에 따라 더 나은 선택을 할 수 있을 것이다.
새로운 프로젝트를 시작할 때는 양쪽을 모두 고려하고, 프로젝트 팀과의 의견을 수렴하여 결정하면 될 것 같다.
참고