yarn vs npm

제이든·2022년 5월 20일
0

Node.js

목록 보기
4/5
post-thumbnail

Node Package Manager 노드 개발자라면 매우 익숙한 이름일 것이다. npm을 사용하면 매우 쉽게 패키지들을 설치하고 관리할 수 있다. 나는 어디서 'yarn이 더 빨라!' 이 한마디 듣고 그 이후로 yarn을 애용하는 중이다. 기본적인 package다운로드 UI도 더 예쁘고

아니 근데,, UI가 예뻐서 쓰는 건 아닐거라는 생각이 문득 들었다. 무슨 아이폰도 아니고.. 정확히 이 둘은 어떤 차이가 있고 어떤 상황에 더 유리한지 알아보자.

1. npm

npm은 자바스크립트 런타임 환경 Node.js의 기본 패키지 관리자이다. npm과 상호작용하는 CLI(명령어 인터페이스), 그리고 JavaScript 소프트웨어의 광범위한 공개 데이터베이스에 액세스하기 위한 레지스트리로 구성되어 있다.

1.1 npm 역사

npm은 온전히 자바스크립트로 작성되어 있으다. 펄의 CPAN과 PHP의 PEAR와 같은 기타 유사한 프로젝트의 단점들에서 영감을 받은 아이작 Z 슐루터(Isaac Z. Schlueter)가 개발하였다.

2. yarn

2016년 Facebook에서 처음 출시한 Yarn 은 JavaScript 프로그래밍 언어의 또 다른 인기 있는 패키지 관리자이다. Yarn을 만든 의도는 npm으로 작업할 때(당시) 성능 및 보안 결점을 해결하는 것이었다.

2020년에는 1월에는 yarn을 한 단계 향상시키고자 yarn2(yarn berry)를 출시했지만 비판을 많이 받았었고 아직까지 많이 사용하지는 않는 것 같다.

따라서 이 글은 yarn v1을 기준으로 한다.

여기까지 봤을 때 npm과 yarn은 모두 패키지 매니저이고 yarn은 npm의 성능을 개선하기 위해 태어났다고 볼 수 있다.

3. npm vs yarn

3.1 인기도 비교

npm이 압도적인 다운로드 수를 기록하고 있는 것으로 보여진다. 근데 뭐 이건 당연한 결과라고 생각이든다. 보통 npm으로 yarn을 설치하는 경우가 많다보니..

github으로 비교해보면 yarn의 star와 fork수가 압도적임을 확인할 수 있다.

3.2 성능

패키지 관리자의 성능은 많은 수의 패키지를 관리할 때 중요한 고려 사항이다.

앞서 언급했듯이 yarn이 개발된 주요 이유 중 하나는 npm의 성능 문제를 극복하기 위해서였습니다. 처음에는 yarn이 성능 면에서 확실한 승자였습니다.

그러나 최근 v5 부터는 npm은 yarn과의 속도 격차를 많이 따라왔다고 한다.

yarn은 이전에 다운로드 했던 패키지를 다시 빠르게 받을 수 있는 오프라인 모드 때문에 캐싱에 관련해서는 확실히 압도적인 성능을 보여주고 있음을 확인했다. npm도 캐싱을 지원하지만 yarn의 성능이 좀 더 낫다고 보여진다.

3.3 보안

처음에는 yarn이 보안적인 측면에서도 훨씬 좋다는 의견이 많았는데, npm 팀은 상당한 보안 개선 사항을 도입했다고 한다.

npm v6부터는 보안이 내장되어 있다. 알려진 보안 취약점이 있는 코드를 설치하려고 하면 npm이 자동으로 경고를 띄워준다. 또한 새로운 명령인 npm audit 가 도입되어 종속성 트리를 재귀적으로 평가하여 이상 징후를 식별할 수 있다.

반면 yarn의 보안 기능 중 일부에는 체크섬을 사용하여 모든 패키지의 무결성을 확인하고 설치된 패키지의 라이센스를 확인하는 기능이 있다.

4. 결론

yarn과 npm은 모두 프로젝트의 종속성을 제어하는데 훌륭한 도구들이라고 생각한다.

현재 v8까지 나온 npm도 많은 사항이 개선되서 릴리즈 되어서 사실 yarn이나 npm이나 이제 성능상으로 큰 차이가 없다고 생각한다.

회사 정책이나, 개인 취향 등에 따라서 yarn과 npm을 자율적으로 사용하면 될 거 같다.

이 포스팅은 yarn v1과 npm(v5이후)를 비교한 글이므로 yarn berry는 다소 적용이 안되는 내용일 수 있다. 다음 포스팅에서는 yarn berry에 대해서 조사해볼 것이다.

profile
개발자 제이든

0개의 댓글