본문 바로가기
프로그래밍/nodejs

[Node.js] npm과 yarn의 차이

by 코끼리_땃쥐 2024. 12. 2.

1. 기본적인 소개

  • npm (Node Package Manager):
    • Node.js와 함께 기본적으로 제공되는 패키지 매니저.
    • 2010년에 처음 출시.
    • Node.js의 표준 패키지 관리 도구로 널리 사용.
  • yarn:
    • Facebook이 주도하여 2016년에 개발.
    • npm의 성능과 보안 문제를 개선하려는 목적으로 시작됨.
    • 병렬 설치와 캐싱 등 성능 최적화 기능을 제공

2. 주요 차이점

특징 npm yarn
속도 단일 쓰레드로 패키지를 설치하므로 비교적 느릴 수 있음. 병렬 설치로 속도가 빠름.
캐싱 캐싱은 있지만 초기 버전에서 제한적이었음. 네트워크 캐싱이 강력하며, 동일한 패키지를 다시 다운로드하지 않고 캐시에서 설치.
보안 기본적으로 SHA-512 해시로 패키지 무결성을 확인. yarn.lock 파일로 설치 버전을 고정하며, 실행 중 추가적인 보안 점검 가능.
Lock 파일 package-lock.json 파일을 사용하여 설치된 패키지 버전 고정. yarn.lock 파일을 사용하여 동일한 기능 제공.
명령어 사용 상대적으로 단순. npm과 비슷하지만 약간 다른 명령어 구조 (yarn add, yarn install).
병렬 설치 지원하지 않음 (npm v5부터 개선). 병렬 설치 지원으로 대규모 프로젝트에서 빠른 속도 제공.
모노레포 지원 workspaces 지원 (npm v7 이상). workspaces 지원으로 여러 프로젝트를 단일 리포지토리에서 관리 가능.
설치 중 안전성 설치 도중 문제가 발생하면 복구가 어려울 수 있음. 문제가 생기면 더 쉽게 복구 가능 (yarn.lock 덕분에 재현성 높은 설치 가능).
패키지 관리 방식 서버 기반 레지스트리에서 직접 패키지를 다운로드. 다운로드한 패키지를 .yarn/cache에 저장하여 오프라인 설치 가능.

 


3. 주요 명령어 비교

작업 npm yarn
패키지 설치 npm install yarn install
특정 패키지 설치 npm install package yarn add package
패키지 제거 npm uninstall package yarn remove package
전역 패키지 설치 npm install -g package yarn global add package
초기화 npm init yarn init
캐시 삭제 npm cache clean --force yarn cache clean

 


4. 최근 동향

  • npm:
    • npm v7 이후로 성능 및 기능이 크게 개선되었으며, workspaces와 같은 기능을 통해 yarn과의 격차를 줄임.
    • 기본적으로 Node.js와 함께 제공되므로 추가 설치가 필요하지 않음.
  • yarn:
    • 초기에는 속도와 캐싱에서 큰 차별점을 보였으나, 최근 npm의 개선으로 경쟁력이 약간 감소.
    • yarn v2 (Berry) 이후로 Plug'n'Play (PnP)와 같은 새로운 기능을 도입하여 기존 방식과 다소 달라짐.

 


5. 어떤 것을 선택해야 할까?

npm을 사용할 경우:

  • Node.js를 설치하면 기본적으로 제공되기 때문에 추가 설치가 필요 없음.
  • 단일 프로젝트에서 간단히 사용하는 경우 적합.
  • 최신 버전(npm v7 이상)은 성능과 안정성이 크게 개선됨.

yarn을 사용할 경우:

  • 대규모 프로젝트에서 빠른 설치와 안정성이 필요한 경우.
  • workspaces 기능을 자주 사용하는 모노레포 환경.
  • 오프라인 설치 또는 고성능 캐싱이 중요한 경우.

결론

  • 개인 프로젝트: npm 사용이 간편하고 충분히 기능적.
  • 대규모 프로젝트: 병렬 설치와 캐싱이 중요한 경우 yarn이 유리.
  • 기술 스택: 팀에서 이미 사용 중인 패키지 관리자를 사용하는 것이 가장 효율적.

댓글