pnpm이 무엇인가

park.js·2024년 8월 27일
2

FrontEnd Develop log

목록 보기
15/37

PNPM이란?

PNPM은 "Performant NPM"의 약자로, 성능과 효율성을 강조한 패키지 매니저이다.

PNPM은 빠르고 효율적인 패키지 매니저로, Node.js 생태계에서 널리 사용되는 NPMYarn의 대안이다.
PNPM은 패키지를 설치할 때 디스크 공간을 절약하고, 프로젝트의 종속성을 더 효율적으로 관리할 수 있도록 설계되었다.

PNPM과 NPM의 주요 차이점:

  1. 패키지 저장 방식:
    • NPM: 각 프로젝트의 node_modules 폴더에 모든 패키지를 복사한다. 이로 인해 동일한 패키지가 여러 프로젝트에 중복 설치되어 디스크 공간이 낭비될 수 있다.
    • PNPM: 패키지를 전역적으로 저장하고, 각 프로젝트의 node_modules에는 실제 파일 대신 심볼릭 링크(글 하단에 설명)를 생성한다. 이 방식은 패키지가 중복으로 저장되지 않도록 하여 디스크 공간을 절약한다.
  2. 성능:
    • PNPM: 패키지를 설치할 때, 설치 속도가 빠르고 디스크 사용량이 적다. 특히, 대규모 프로젝트에서 NPM이나 Yarn보다 훨씬 빠르게 동작할 수 있다.
    • NPM: 패키지를 복사하여 설치하기 때문에, 설치 속도가 느릴 수 있고, 디스크 공간을 많이 차지한다.
  3. 일관된 의존성 관리:
    • PNPM: pnpm-lock.yaml 파일을 통해 의존성 트리의 모든 부분을 고정한다. 이를 통해 모든 개발자가 동일한 환경에서 동일한 패키지 버전을 사용하도록 보장한다.
    • NPM: package-lock.json 파일을 사용하여 의존성을 관리하지만, 패키지 설치 방식이 다를 수 있다.
  4. Workspace 지원:
    • PNPM: 모노레포(monorepo) 프로젝트를 위한 워크스페이스 기능을 내장하고 있다. 여러 패키지를 하나의 리포지토리에서 관리할 수 있으며, 종속성을 효율적으로 공유할 수 있다.
    • NPM: NPM 7부터 워크스페이스를 지원하기 시작했지만, PNPM의 워크스페이스 기능이 더 성숙하고 효율적다.

PNPM의 주요 장점:

  1. 디스크 공간 절약:
    • PNPM은 모든 프로젝트가 동일한 패키지의 복사본을 공유하도록 하여, 디스크 공간을 크게 절약한다. 이는 대규모 프로젝트나 여러 프로젝트를 관리할 때 매우 유용하다.
  2. 빠른 설치 속도:
    • 패키지 설치 시, PNPM은 NPM이나 Yarn보다 훨씬 빠르게 동작할 수 있다. 이는 심볼릭 링크를 사용해 중복된 파일을 피하고, 전역 저장소에서 패키지를 가져오기 때문에 가능한 것이다.
  3. 일관된 환경 보장:
    • PNPM은 의존성 관리를 철저하게 수행하여, 개발 환경과 CI/CD 환경 간의 일관성을 유지할 수 있다. 모든 개발자가 동일한 의존성을 갖춘 프로젝트에서 작업할 수 있도록 보장한다.
  4. 효율적인 모노레포 관리:
    • 모노레포 구조에서 여러 패키지를 관리할 때, PNPM의 워크스페이스 기능은 의존성 관리를 효율적으로 수행한다. 패키지 간의 의존성을 쉽게 연결하고, 중복을 최소화한다.
  5. 호환성:
    • PNPM은 NPM 레지스트리와 완벽하게 호환되며, NPM 스크립트와도 호환된다. 따라서 기존의 NPM 프로젝트를 PNPM으로 쉽게 전환할 수 있다.

결론:

PNPM은 패키지 관리의 효율성을 높이고, 디스크 사용량을 절감하며, 성능을 향상시키는 데 중점을 둔 패키지 매니저이다. 특히, 대규모 프로젝트나 모노레포 환경에서 뛰어난 성능과 관리 효율성을 제공하기 때문에, 많은 개발자들이 NPM이나 Yarn 대신 PNPM을 선택하고 있다.

  • 파일 시스템에서 특정 파일이나 디렉터리의 위치를 가리키는 "참조" 역할을 하는 특별한 파일.
  • 쉽게 말해, 심볼릭 링크는 원본 파일이나 폴더에 대한 "바로 가기" 같은 것.
  • 기능: 심볼릭 링크를 열거나 접근하면 실제로는 원본 파일이나 폴더가 열리거나 접근된다.
  • 장점: 동일한 파일이나 폴더를 여러 위치에서 사용할 수 있으면서, 실제로는 한 곳에만 저장되어 있어, 디스크 공간을 절약하고 관리 효율성을 높여준다.
  • 예를 들어, fileA라는 파일에 대한 심볼릭 링크를 만들면, 이 링크를 통해 fileA를 마치 그 위치에 있는 것처럼 사용할 수 있다.

심볼릭 링크의 용도

파일 시스템 내의 유연성:

  • 파일이나 디렉토리를 여러 위치에서 사용해야 할 때, 심볼릭 링크를 사용하면 원본 파일을 복사할 필요 없이 간편하게 접근할 수 있다.
profile
참 되게 살자

0개의 댓글