yarn VS npm VS pnpm

영슈·2023년 4월 10일
0

Express js Framework

목록 보기
2/3

왜 사용 할까?

패키지 ( 모듈 ) 관리를 도와주는 도구 , 손쉽게 설치하고 프로젝트에서 사용 가능하게 한다.
자신이 작성한 코드를 공유하고 다른 사람들이 사용 가능하게 한다.

제공하는 기능

  • metadata 작성 & 관리
  • 모든 dependencies install & update
  • dependencies add , update ,delete
  • custom script 실행
  • package publish
  • 보안 검사

npm

  • node package manager
  • 2010 년 1월 출시
  • 기존 수동 package 다운 및 관리를 개선
  • metadata 를 저장하는 package.json 사용
  • dependencies 들을 node_modules 에 저장

yarn classic

  • Yet Another Resource Negotiator
  • Facebook 에서 개발 ( 2016 년 )
  • 작업 병렬화 ( 설치 프로세스 속도 상승 )
  • 캐싱 기능 지원
  • yarn.lock 을 사용한 의존성 관리 ( package-lock.json 대신 )
  • 현재 유지보수 모드 전환 ( yarn berry 가 차세대 개선안 )

node_moduels 의 문제점

  1. 매우 많은 양의 파일을 포함 ( 설치 가 대부분의 시간 차지 )
  2. I/O 작업이 많으므로 하드 링크 , 복사 전용 등 최적화가 힘듬
  3. package.json 에 모든 종속성을 나열하지 않음. ( production에서 작동 오류 발생 가능 )
  4. Node resolution 은 file loading 을 위해 stat & readdir 호출을 수행했다. ( 부팅 시간 오래 걸림 )
  5. 메모리에서 패키지가 여러번 인스턴스화 되는 경우 발생

pnpm

  • 2017 년 만들어짐
  • npm 의 drop-in-replacement ( 바로 사용 가능 + 기능 향상 )
  • 기존의 방식과 정반대인 content-addressable storage

Content-addressable storage

  • 모든 dependencies 는 home Folder 의 저장소에 저장
  • 물리적으로 한번만 저장 ( 디스크 공간 절약 가능 )
  • 폴더 내부 패키지 파일은 저장소에 대한 하드 링크로 구성

yarn berry

  • 2020년 1월 출시
  • 기존 yarn 의 업그레이드 버전
  • plun n play 전략 사용 ( PnP )

Plug n play

  • .pnp.cjs 라는 의존성 lookup 파일 사용 ( 단일 파일 )
  • 모든 package 는 .yarn/cache 폴더 내부에 zip 파일로 저장
  • I/O 작업이 현저히 줄어듬. ( 설치 안정적이고 신뢰성 높아짐 )
  • Node 해석 작업이 파일 시스템 계층 구조를 순회하지 않으므로 시작 속도 상승

0개의 댓글