본문 바로가기
✨FRONTEND/📍Next.js

내가 pnpm을 쓰는 이유

by 짱돌보리 2026. 2. 13.
728x90

 

사실 나는 pnpm을 쓰면서도 정확한 이유를 잘 알지 못했다.

프로젝트를 시작할 때 그냥 자연스럽게 pnpm을 선택했다.

 

이유는 단순했다.

“요즘 다 pnpm 쓴다던데?”

“설치 속도가 빠르다던데?”

 

그 정도면 충분하다고 생각했다.

어차피 패키지 매니저는 npm, yarn, pnpm 중 하나일 뿐이라고 여겼다.

 

그런데 문득 이런 생각이 들었다.

나는 왜 pnpm을 쓰는 걸까?

정말 단순히 빠르기 때문일까?

 

어쩌면 ‘남들이 많이 쓰니까’라는 이유로 아무 생각 없이 선택하고 있었던 건 아닐까?

그래서 이번에는 막연한 이유가 아니라, 구조적인 이유를 이해해보기로 했다.

 

pnpm은 왜 등장했는지,

모노레포와는 어떤 관계가 있는지,

그리고 나는 왜 이 도구를 계속 쓰고 있는지.

하나씩 정리해보려 한다.


🧱 모노레포라는 개념부터 이해하기

pnpm 이야기를 하려면

먼저 모노레포(Monorepo)를 알아야 했다.

 

모노레포는 간단히 말하면,

여러 프로젝트를 하나의 Git 저장소에서 관리하는 방식이다.

 

예를 들어,

📦 하나의 저장소
 ├─ web (사용자 웹)
 ├─ admin (관리자 페이지)
 └─ ui (공통 컴포넌트)

 

이렇게 하나의 레포 안에서

여러 앱과 공통 코드를 함께 관리하는 구조다.


🤔 왜 이렇게 할까?

  • 공통 UI를 한 번만 수정하면 모두 반영된다.
  • 버전을 따로 맞출 필요가 없다.
  • 협업이 더 수월하다.
  • 코드 공유가 자연스럽다.

서비스가 커질수록 모노레포 구조가 더 유리해진다.

그리고 이런 구조를 빠르게 관리하기 위한 도구가 있다.


🚀 Turborepo의 등장

모노레포는 편하지만 단점도 있다. 프로젝트가 여러 개니까 빌드를 할 때마다 전부 다시 돌게 되면 느려질 수 있다.

그래서 등장한 도구가 바로 Turborepo 다.

 

이 도구는

  • 변경된 부분만 빌드하고
  • 캐시를 활용하고
  • 작업을 병렬로 실행한다

즉,

모노레포를 빠르게 만들어주는 엔진 같은 존재다.

 

특히 Turborepo는 공식 문서에서도

 

pnpm 기반 예제를 기본으로 제공하고 있다.

https://turborepo.dev/repo/docs

 

Introduction

Welcome to the Turborepo documentation!

turborepo.dev

 


📦 그럼 pnpm은 왜 필요할까?

이제 다시 pnpm으로 돌아오면,

모노레포를 사용하면

  • 패키지 수가 많아지고
  • 의존성도 복잡해지고
  • node_modules 크기도 커진다.

여기서 pnpm의 구조가 빛을 발한다.

pnpm은 패키지를

  • 전역 저장소에 한 번만 저장하고
  • 각 프로젝트에서는 심볼릭 링크로 연결한다.

그래서:

  • 디스크 공간을 덜 쓰고
  • 설치 속도가 빠르고
  • 의존성 충돌이 줄어든다.

 

공식 문서에서도

pnpm은 workspace(모노레포) 환경을 기본적으로 지원하는 패키지 매니저로 소개된다.

https://pnpm.io/workspaces

 

Workspace | pnpm

pnpm has built-in support for monorepositories (AKA multi-package repositories,

pnpm.io

 


⚡ Next.js에서도 자연스럽게 쓰이는 pnpm

그리고 내가 주로 사용하는 Next.js 역시 Turborepo와 함께 사용하는 예시가 많고, 공식 가이드에서도 pnpm 기반 명령어를 함께 제공한다.

https://nextjs.org/docs

 

Next.js Docs | Next.js

Welcome to the Next.js Documentation.

nextjs.org

https://turborepo.dev/repo/docs/guides/frameworks/nextjs

 

Next.js

Learn how to use Next.js in a monorepo.

turborepo.dev

 

즉,

pnpm은 단순히 “빠른 패키지 매니저”가 아니라

모노레포 생태계에서 자연스럽게 선택되는 도구였다.


📌 내가 pnpm을 쓰는 이유

처음에는 단순히 “설치 속도가 빠르다”는 이유로 사용하기 시작했다.
npm보다 체감상 훨씬 빠르게 의존성이 설치되는 점이 가장 큰 매력이었다.

 

하지만 정리해보니, pnpm은 단순히 빠르기만 한 도구는 아니었다.


모노레포 구조와 workspace를 기본적으로 지원하고,
의존성 관리가 더 엄격해 프로젝트 규모가 커질수록 장점이 드러나는 구조였다.

 

아직 모노레포를 직접 운영해본 경험은 없지만,
프로젝트가 확장될 가능성을 고려해 더 안정적이고 관리하기 쉬운 선택지를 유지하고 있다.

 

이제는 단순히 “요즘 많이 써서”가 아니라, 왜 사용하는지 이해한 상태에서 선택한 도구가 되었다.

 


 

아래 글에서 패키지 매니저 비교와 함께 pnpm의 동작 원리를 정리했습니다.

[✨FRONTEND/📍React] - 패키지 관리자 비교

 

패키지 관리자 비교

프론트엔드 개발을 하다 보면 가장 먼저 마주치는 도구 중 하나가 패키지 매니저다.패키지 매니저는 프로젝트에 필요한 라이브러리를 설치하고, 버전을 관리해 주는 도구다. 대표적으로 npm, Yarn

bori-note.tistory.com