본문 바로가기
카테고리 없음

Node.js 패키지 매니저 비교하기

by 엔 터 2024. 11. 14.

Node.js에는 npm, yarn, pnpm 이라는 패키지 매니저들이 존재한다.

하지만 나는 그냥 관성적으로 Node를 설치하면 같이 설치되는 npm만 사용했고
불편한점을 느끼지 못했다.

 

그러다가 프로젝트 진행하면서 CI/CD를 적용하려고 찾아 보던 중

CI/CD의 CI 과정이 너무 길어서 새로운 패키지 매니저의 도입을 통해 1분 가량의 빌드 시간을 줄였다고

쓴 기업의 테크 블로그를 보고 아 패키지를 바꾸는것으로 개선점이 생기는구나

'왜 생기지?'라는 궁금증이 생겼고

그래서 이 패키지 매니저들에 대해 조사해보고 그 내용을 정리한 글이다.

 

1. npm

  • 기본 패키지 매니저: Node.js 설치 시 기본적으로 포함된다.
  • 설치 방식: node_modules 폴더에 패키지를 설치한다.
  • 캐싱: 설치된 패키지를 캐시하여 다음 설치 시 속도가 빨라진다.
  • Lock 파일: package-lock.json 파일을 사용하여 버전 고정을 관리한다.
  • 장점:
    • 가장 널리 사용되며 생태계가 풍부하다.
    • 안정적인 기본 기능 제공.
  • 단점:
    • 대규모 프로젝트에서는 node_modules의 크기가 매우 커짐.
    • 설치 속도가 느림(병렬처리 업데이트로 차이가 줄었다고 한다).

2. Yarn

  • Facebook에서 npm의 단점을 개선하기 위해 만든 패키지 매니저.
  • 설치 방식: node_modules 폴더에 패키지를 설치한다.
  • Lock 파일: yarn.lock 파일을 사용한다.
  • 병렬 설치: 패키지를 병렬로 설치하여 성능을 개선.
  • 장점:
    • 병렬 설치 기능으로 설치 속도가 빠르다.
    • yarn.lock 파일을 통해 패키지 버전 고정이 확실.
  • 단점:
    • 최근 npm의 업데이트로 기능 차이가 줄어들었습니다.

3. pnpm

  • 공간 절약빠른 설치에 중점을 둔 패키지 매니저.
  • 설치 방식:
    • node_modules 대신 글로벌 스토리지에 패키지를 저장하고 심볼릭 링크를 생성한다.
    • 중복된 패키지를 한 번만 설치하여 공간을 절약한다.
  • Lock 파일: pnpm-lock.yaml 파일을 사용합니다.
  • 장점:
    • 설치 속도가 매우 빠르며, 디스크 사용량이 적습니다.
    • node_modules 폴더의 중복 문제를 해결합니다.
  • 단점:
    • pnpm 특유의 설치 방식 때문에 일부 패키지 호환성 문제가 있을 수 있습니다.

4. Yarn PnP (Plug'n'Play)

  • Yarn의 독특한 설치 방식으로, node_modules 폴더를 아예 사용하지 않는다.
  • 설치 방식:
    • 모든 패키지를 .pnp.cjs 파일에 저장하고, 실행 시 파일 시스템을 통해 직접 접근한다.
  • 장점:
    • node_modules 폴더가 없어지므로, 디스크 사용량이 줄어든다.
    • 의존성 문제를 더욱 엄격하게 관리할 수 있다.
  • 단점:
    • 일부 패키지들이 node_modules 폴더에 의존하고 있어 호환성 문제가 발생할 수 있다.

참고

https://tech.inflab.com/20231101-optimizing-ci-pipeline/

 

CI 소요시간을 최대 4.6배 개선하는 방법

Jenkins CI 환경에서 Turborepo 기반 모노레포 CI 소요시간을 최대 4.6배 개선한 경험과 pnpm 의존성 캐시 및 Turbo Task 캐시를 Jenkins 에이전트 간에 공유하는 방법을 소개합니다.

tech.inflab.com

https://engineering.ab180.co/stories/yarn-to-pnpm

 

Yarn 대신 pnpm으로 넘어간 3가지 이유

패키지 매니저를 바꾸고 1년 동안 사용해보며 든 생각들

engineering.ab180.co

https://yceffort.kr/2022/05/npm-vs-yarn-vs-pnpm

 

npm, yarn, pnpm 비교해보기

Table of Contents Introduction npm 에서 시작한 node package management의 역사는, 이제 3가지 옵션이 주어져 있다. yarn 1.0 (이제 yarn classic 이라고 부르겠다) 과 yarn 2.0 (yarn berry) 두 가지 버전도 사뭇 다른 점이

yceffort.kr