npm vs yarn 비교

·2025년 1월 7일
0

나 : 기본이 짜세지 주로 npm 사용
@ : 좋은 걸 써야지 주로 yarn 사용
왜 npm을 쓰세요? 하면 나는... 딱히 이유는 없다. (사실 잘 몰라서 그런 거임)
전에 같이 작업했던 백엔드 개발자분께 왜 yarn을 쓰시냐고 여쭤봤을땐, 그냥 yarn이 더 좋다고

아 yarn이 좋은거구나..
머리 : 생각할게
손가락 : 타이핑할게 (npm)

아무리 생각을 해도 npm. 너만 보인단 말임, 너무 익숙해졌단 말이야.
아무튼, 갑자기 생각난 김에 두 개를 비교해 보는 시간을 가져야겠다.
그래서, 왜 yarn이 좋다고 하는 건데요.

📍 커뮤니티와 호환성

npm

  • Node.js와 함께 기본 제공되는 공식 패키지 매니저로, javascript 생태계에서 가장 널리 사용됨
  • 대부분의 javaScript 개발자와 패키지가 npm 기준으로 작업하고 있음

yarn

  • Facebook이 개발한 도구로, 초기에는 npm의 성능 문제를 해결하기 위해 도입
  • 현재는 대형 프로젝트 및 팀에서 널리 사용
  • npm과의 높은 호환성 덕분에 npm으로 설치한 패키지를 yarn에서도 사용 가능함

📍 설치 속도와 성능

npm

project/
├── node_modules/
│   ├── package-a/
│   │   └── node_modules/
│   │       └── package-b/
│   └── package-c/
  • 의존성 트리 설치 방식을 사용하여 각 패키지 내부에 중첩 설치
  • 초기에는 느린속도로 지적되었으나, npm 5 버전 이후 캐싱 및 병렬 설치 기능이 추가되어 속도가 개선
  • 중복된 네트워크 요청과 파일 시스템 작업으로 인해, 특정 상황에서는 시간이 더 걸릴 수 있음

yarn

project/
├── node_modules/
│   ├── package-a/
│   ├── package-b/
│   └── package-c/
  • 속도를 우선적으로 고려하여 설계된 패키지 매니저
  • 병렬 설치로컬 캐시 시스템으로 설치 속도가 npm 보다 빠른 경우가 많음
  • 패키지를 다운로드하면 로컬 캐시에 저장하여, 이후 동일 패키지 재설치 시 더 빠르게 진행

📍 의존성 설치 방식

npm

{
  "name": "project",
  "version": "1.0.0",
  "dependencies": {
    "lodash": "^4.17.21"
  }
}
  • package-lock.json 도입 (버전 5이후) 의존성 버전을 명확히 관리
  • 설치가 순차적으로 이루어질 경우, 대규모 프로젝트에서는 속도가 느릴 수 있음

yarn

# yarn lockfile v1

lodash@^4.17.21:
  version "4.17.21"
  resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz"
  integrity sha512-v2kDEe57lec...
  • yarn.lock을 통해 동일 프로젝트에서 항상 같은 의존성 버전 유지
  • 설치 속도가 빠르고, 네트워크 상태에 관계없이 캐시를 활용해 효율적인 설치 가능

📍 명령어 차이


결론

  • npm은 기본적인 패키지 관리 기능과 Node.js의 공식 패키지 매니저로 신뢰성이 뛰어나며, 최근에 개선되어 속도면에서도 크게 향상됨
  • yarn은 성능과 속도가 중요한 대규모 프로젝트에서 강력한 도구로 자리 잡음. 캐싱, 병렬설치 더 빠르고 일관된 결과를 제공함
  • 개인 프로젝트나 작은 규모는 npm으로 충분하고, 팀 프로젝트나 복잡한 앱에서는 yarn

참고

https://codeparrot.ai/blogs/npm-vs-yarn-key-differences-and-in-depth-comparison

https://www.sitepoint.com/yarn-vs-npm/

https://blog.logrocket.com/javascript-package-managers-compared/

profile
개발공부? 하면해

0개의 댓글