본문 바로가기
개발

[pnpm] pnpm 알아보기

by goodchuck 2024. 6. 13.

목차

     

     

     PNPM이란?

    PNPM(Package Now, Performant Managing)은 Node.js 생태계에서 패키지를 관리하기 위한 패키지 매니저이다.

    PNPM은 NPM(Node Package Manager) 및 Yarn과 같은 다른 패키지 매니저들과 비슷한 기능을 제공하지만, 몇 가지 중요한 차이점과 장점이 있다.

     

     주요 특징 및 장점

    성능 향상

    • PNPM은 패키지를 설치할 때 하드 링크와 심볼릭 링크를 활용하여 디스크 공간을 절약하고 설치 속도를 크게 향상시킨다. 이는 중복된 패키지의 다운로드를 방지하고, 패키지 설치 시간을 줄여준다.

    저장 공간 절약

    • 패키지들이 전역적으로 저장되기 때문에, 동일한 패키지가 여러 프로젝트에서 공유될 수 있다. 이는 디스크 공간을 크게 절약해준다.

    고유의 Node 모듈 구조

    • PNPM은 Node 모듈을 평탄화(flatten)하지 않고, 프로젝트 별로 필요한 정확한 버전의 의존성을 유지한다. 이는 패키지의 의존성 충돌을 줄이고, Node.js 모듈 해석을 일관되게 만들어준다.

    패키지 관리의 효율성

    • 대규모 모노레포(monorepo) 프로젝트에서도 효율적으로 동작하며, 패키지 간의 링크와 공유를 쉽게 관리할 수 있다.

     PNPM 사용 이슈

    빠른 속도

    • 대규모 프로젝트에서 PNPM은 npm이나 Yarn보다 빠르게 패키지를 설치할 수 있다.

    저장 공간 절약

    • 동일한 패키지가 여러 프로젝트에서 공유되므로, 디스크 공간을 절약할 수 있다.

    의존성 관리의 안전성

    • PNPM은 각 프로젝트에 맞는 정확한 버전의 의존성을 관리하여, 의존성 충돌을 줄이고 안정성을 높인다.

    모노레포 지원

    • 모노레포 환경에서 여러 패키지를 효율적으로 관리할 수 있다.

     예제

    PNPM 설치

    npm install -g pnpm

     

    패키지 설치

    pnpm install

     

    특정 패키지 설치

    pnpm add <패키지명>

     

     PNPM은 NPM의 상위 개념인가?

    PNPM은 NPM의 "상위 개념"으로 이해하기 보다는, "대안적인 선택지"로 보는 것이 더 적절하다.

    PNPM은 npm과 동일한 기능을 제공하지만, 성능 및 효율성 측면에서 몇 가지 중요한 개선점을 제공하는 패키지 매니저이다.

     

    주요 차이점 및 관계

     기능적 유사성

    • PNPM과 NPM 모두 Node.js 생태계에서 패키지를 관리하기 위한 도구이다. 패키지 설치, 의존성 관리, 스크립트 실행 등 기본적인 기능은 비슷하다.

     패키지 저장 구조

    • npm은 기본적으로 각 프로젝트마다 모든 의존성을 복사하여 설치한다. 이는 디스크 공간을 많이 차지할 수 있다.
    • PNPM은 패키지를 전역적으로 저장하고 하드 링크 및 심볼릭 링크를 통해 각 프로젝트에 연결한다. 이는 디스크 공간을 절약하고 설치 속도를 빠르게 한다.

     의존성 충돌 방지

    • PNPM은 각 패키지의 의존성을 독립적으로 관리하여, 특정 패키지 버전에 따른 충돌을 줄인다. NPM도 이런 문제를 해결하기 위해 'package-lock.json'파일을 사용하지만, PNPM의 방식이 더 직관적일 수 있다.

     모노레포 지원

    • PNPM은 모노레포를 매우 잘 지원한다. 여러 패키지를 하나의 레포지토리에서 관리하는 환경에서 효율적이다. npm도 모노레포를 지원하지만, PNPM의 설계가 더 적합하다.

    요약

    • 대안적인 선택 : PNPM은 npm의 상위 개념이 아니라 대안적인 패키지 매니저이다. npm과 동일한 기본 기능을 제공하면서도 성능과 효율성에서 개선된 점을 가지고 있다.
    • 성능 및 효율성 : 패키지 설치 속도, 디스크 공간 절약, 의존성 관리의 안정성 등에서 PNPM은 npm보다 나은 선택이 될 수 있다.
    • 모노레포 환경 : 모노레포를 사용하는 대규모 프로젝트에서 PNPM은 특히 유용하다.

    결론적으로, PNPM은 npm을 대체할 수 있는 강력한 패키지 매니저로, 특정 상황에서는 더 나은 성능과 효율성을 제공할 수 있다. 하지만 모든 프로젝트에 반드시 PNPM을 사용해야 한다는 의미는 아니며, 프로젝트의 요구 사항에 따라 적절한 패키지 매니저를 선택하는 것이 중요하다.