NPM과 Yarn 뭐가 달라?

JiHun Song·2023년 5월 25일
0
post-thumbnail

지금까지 두 곳의 회사를 다니면서, 프론트엔드의 기술 스택은 ReactVue를 사용했다.

첫 회사는 ReactYarn, 두번째 지금 현재의 회사는 VueNPM을 사용한다.

두 개의 프레임워크와 패키지 매니저를 사용해보면서 차이점을 적어 볼려고 한다.

  • Node.js는 자바스크립트를 실행시켜주는 엔진이다.
  • Node.js를 설치하게되면 자동으로 npxNPM이 자동으로 설치된다.
  • 해당 프로젝트에 패키지 매니저를 설치하게되면 node_modules 폴더가 생성된다.

📌 자바스크립트 패키지 매니저란?

  • 패키지란 npm에 업로드된 노드 모듈을 말한다.
  • 하나의 패키지가 다른 패키지를 사용할 경우 의존 관계를 가지기도 한다.
  • 패키지를 프로젝트에서 사용는 패키지는 의존성 모듈이라고 불리기도 한다.

NPM에 등록되어 있는 패키지들을 다운로드, 설치, 업데이트 및 관리 등 많은 과정들을 자동화하여 편리하고 안전하게 수행할 수 있도록 해준다.

NPM Yarn은 Node PackageManager이다.
차이점을 찾아보기 위해 구글링을 시도해봤다.

📌 NPM PackageManager

자바스크립트 런타임 환경 Node.js의 '기본 패키지 관리자'이다. 세계의 많은 개발자들이 공유한다.

📌 Yarn PackageManager

Yarn은 2016년 페이스북에서 개발한 페키지 관리자이다. 그 당시 Npm을 이용한 패키지 버전 관리가 어려움이 있었고, 불안정성을 해소하기 위해 개발되었다고 한다.

📌 그래서 Npm과 Yarn의 차이점이 뭐야??

1. 속도

여러개의 의존성 모듈 설치 프로세스 처리하는 방식이 다르다.
NPM은 한 번에 하나씩 순차적으로 설치한다.
YARN은 동시에 설치를 진행하도록한다.
NPM5.0 버전부터는 YARN과 속도 차이가 거의 없다는 견해도 있다.

2. 공유성

다수의 개발자들이 개발에 함께 참여하게되는 상황에서 모든 개발자들이 동일한 개발 환경을 가지는 것이 중요합니다.
이를 위해 package.json파일을 통해 버전을 공유합니다.
하지만 package.json의 범위 지정 방식은 패키지를 가장 최근의 버전의 패키지를 설치하기에 이슈가 발생할 확률이 높습니다.
Yarn은 이를 해결하기 위해 yarn.lock 파일을 통해 정확하게 버전 정보를 추적합니다.
NPM5.0버전부터는 버전 공유성 이슈를 해결하기 위해서 package-lock.json 파일로 사용하고있는 모든 패키지들의 정확한 버전 정보를 추적할 수 있어 안정성 문제도 해결됐습니다.

3. 보안성

가장 중요한 부분이라고 생각할 수도 있습니다. NPM의 장점으로서 뽑히는 의존성이 있는 패키지들을 포함될 수 있도록 하는 코드를 자동으로 실행합니다.
이는 추후 큰 문제를 야기할 수 있는 가능성이 있습니다.
반면에 Yarn은 yarn.lockpackage.json 파일에 존재하는 패키지들만 설치를 진행합니다.

그래서 결론은 뭔데???

NPM과 Yarn은 디스크 용량 등 추가적인 차이점이 존재하고 각각의 장단점이 존재하지만, 아직까지는 Yarn이 현업에서 사용하기에는 조금 더 편리한 감이 있는 것 같습니다.
NPM도 지속적으로 업데이트를 하고 있어서 Yarn과 차이는 점차 좁혀질 것으로 생각이 듭니다.
이는 앞으로 NPM이냐 Yarn이냐의 선택은 어떤 패키지 매니저가 최적화를 잘해주냐에 달린 것 같다고 조심스럽게 생각해봅니다...

📌 다음 할 일

다음에는 Yarn berry에 대해 조사해봐야 겠다...
사전 조사로는 Yarn berry를 사용하여 zero install을 할 수 있다고 한다.

profile
클린코드를 좋아하는 개발자

0개의 댓글