pnpm

김_리트리버·2022년 3월 16일
2

기타꿀팁

목록 보기
13/14

npm 또는 yarn 의 불편함 및 속도를 개선한 package manager

예를 들어 100개의 react project 가 100개 있는 경우

각 project 별로 npm install 을 통해 100개의 node_modules 폴더가 만들어져 용량을 많이 잡아 먹게 된다.  

pnpm 을 사용하면 특정 project 주소별 저장소에 저장해서 프로젝트 별로 연결만 시켜주어 같은 라이브러리를 중복해서 설치하지 않도록 한다.

  1. 특정 프로젝트만 다른 버전의 라이브러리를 사용하는 경우 저장소에 있는 라이브러리가 update 되지 않고 다른 버전의 라이브러리만 새롭게 추가됨
    다른 프로젝트가 버전 호환 문제가 생기지 않도록 해준다.
  2. 모든 파일은 디스크의 한 위치에 저장됨
    패키지가 설치되면 해당 파일이 프로젝트 위치와 연결된다.
    추가 저장 공간을 사용하지 않는다.
    이를 통해 프로젝트 간에 동일한 버전의 라이브러리를 공유할 수 있다.
  3. pnpm은 symlink를 사용하여 모듈 디렉토리의 루트에 프로젝트의 직접적인 종속성만 추가한다.
    예를 들어 moment 를 설치하지 않았는데 다른 라이브러리에서 moment 를 사용할 경우 내 프로젝트에서도 사용할 수 있었다.
    하지만 pnpm 에서는 이를 방지했다.

결과적으로 저장공간을 많이 절약하고 훨씬 더 빠르게 설치할 수 있다

설치는 터미널에서 brew install pnpm 로 하면 됨

CI

Continuous Integration | pnpm

github action 기준으로 pnpm 설치하고 사용하면된다.

크게 어려운 건 없다.

Git 주의사항

  • pnpm-lock.yaml 변경사항 있을 때마다 commit 해야 한다.
    • 패키지 확인을 건너뛸 수 있으므로 CI 및 프로덕션 환경에 더 빠르게 설치가능
    • 개발, 테스트 및 프로덕션 환경 간에 일관된 설치 및 해결을 적용합니다. 즉, 테스트 및 프로덕션에 사용되는 패키지가 프로젝트를 개발할 때와 정확히 동일합니다.
  • merge conflict
    • pnpm은 자동으로 병합 충돌을 해결할 수 있습니다 pnpm-lock.yaml. 충돌이 있는 경우 pnpm install변경 사항을 실행하고 커밋

참고
https://pnpm.io/ko/
https://pnpm.io/ko/motivation

profile
web-developer

0개의 댓글