본문 바로가기

개발/Front-end

Npm vs Yarn

반응형

Package manager를 선택을 고민하시는 분들은 한번 읽어보시면 좋을 것 같습니다.

 

Yarn과 npm 비교한 글로 ryan이라는 ryadel에 많은 글을 보유한 웹 개발자가 쓴 글을 토대로 적어보겠습니다. 10.6K 정도의 사람들이 읽었습니다. ( 댓글 수나 Like, Star, Clap은 높진 않네요) 다른 글도 많지만 19년 7월 가장 최근 글이라 택하였습니다.

저의 경험으로 미루어보면 처음 시작할 때는 npm으로 시작하였습니다. 하지만 많은 사람들의 Yarn을 사용하였고 왜 쓰는지 물어보면 "Cool하다" 라고 애기를 하였습니다. 그 "Cool"을 알아보기 위해 사용해보았는데 성능상의 차이는 크게 나지 않았습니다. 하지만 "Cool" 함의 체감은 어느 정도 체험했습니다. 굳이 비유를 하자면 개인적인 비유로 Facebook vs Instagram(?) 이라고 하겠습니다(ㅎㅎ).

 

yarn이 페이스북, 구글의tilde의 엔지니어 그룹에서 만들었다고 합니다. 조사하다 처음 안 사실이네요.

좀 더 자세히 비교해보면

비교 대상

  • 퍼포먼스
  • 안정성
  • 보안성
  • 사용 빈도

에 근거하여 비교해보겠습니다.

속도(Performance)

yarn은 2016.10에 릴리즈 와 npm5.0.0 릴리즈의 8개월 동안의 performance의 승자는 yarn 이였다.

2년이 지나고 npm은 모든 릴리즈를 punching back을 통해 그 차이를 따라 잡았고 ryan은 npm V6.10.1과 yarn V1.17.3을 install 실험을 하였는데 아주 근소한 차이로 2019년에도 yarn이 승리하였다(아주 조금의 cache 차이가 존재할 것이다)

거의 차이가 없어졌다 정도로 판단하고 넘어가면 좋을 것 같다.

안정성(Stability)

npm과 yarn 둘다 단단하다. 안정성이란 부분에서는 명확한 승자는 보이지 않는다. 수억의 다운로드와 사용자가 사용하고 테스팅하는 데 있어서 잘 사용되기에 문제가 없어보인다. 또한 Window, Linux및 macOS등 잘 사용되고 있다.

보안성(Security)

Facebook에서 yarn을 개발한 메인 이유중 하나는 더 좋은 방법으로 npm's security에 접근하는 것이다.

npm은 패키지가 설치 될 때 자동으로 코드와 의존성을 실행할 수 있도록 허용했다. 이 특징은 편리하나 안정성의 위험도가 증가했다. 특히 정책 없이 등록하였던 패키지 제출물 부분에서 위험도가 높았다. 반면에 yarn은 yarn.lock이나 package.json으로 부터 설치 한다. 더 구체적으로 말하자면 yarn.lock은 모든 디바이스에 같은 패키지를 설치하는 것을 보장하여 다른 버전을 설치로 부터 버그가 오는 많은 양을 줄여버렸다.

이러한 차이는 현재에도 강화되고 있으며 보안성의 부분에서는 yarn이 더욱 좋다고 생각된다.

이 부분의 번역이 온전치 않다고 판단하여 원문 참조하겠습니다.

NPM allowed packages to run code on installation automatically and on-the-fly, even from their dependencies automatically and on the fly. While this feature has its conveniences, it raised a few security concerns – especially considering the no-vetting registry policy on package submissions which we talked about early on. Conversely, Yarn only installs from your yarn.lock or package.json files. More specifically, yarn.lock ensures that the same package is installed throughout all devices, thus drastically reducing the chance of bugs from having different versions installed.

2017년 npm팀에서 package-lock.json을 추가하여 현재는 yarn과 비슷한 구조를 두어 두 패키지 매니저의 차이를 줄였습니다.

사용빈도

위의 그림은 다운로드 수의 비교이다. 수치상으로는 npm이 앞선다. 이전의 점유율이 이를 대변하는 듯 보인다.

Star수와 Fork수, Issues수를 보면 사람들의 관심도를 볼 수 있다.

이는 글에 있던 비교이고 현재(20191024)에서 비교를 해보자면

 

blog에서 했던 비교랑 시기가 크게 차이(3개월) 나지 않습니다. yarn에 사람들의 관심이 더 높고 npm은 점유율이 높다 정도로 파악하고 넘어가겠습니다.

또 다른 package manager인pnpm을 언급하였지만 아직 활용도가 떨어지기에 언급하지 않겠습니다. pnpm의 특징으로는 node_modules의 수를 한번에 관리하여 용량을 크게 줄였다 입니다.

위글을 다 읽고 번역해보니 yarn 찬양 글이 된 것 같습니다. 다운로드 수와 사용자 수가 많다는 장점을 가진 npm을 사용하든 다양한 장점을 가진 yarn을 사용하든 개발에 있어서 큰 차이는 없기에 원하시는 package 매니저를 사용하시면 좋을 것 같습니다.

감사합니다.

 

 

Medium에 쓴 글이 현재는 구글 검색 노출이 되지 않네요. 보완하고 재 작성하여 업로드 합니다.

Npm, Yarn 을 공부하다보면 자연스럽게 떠오르는 호기심에 정리를 해보았는데 생각보다 많은 분들이 봐주셔서 놀라기도 했고 감사했습니다. 더 좋은 글을 쓰도록 노력하겠습니다.

반응형