AI 뉴스

pnpm v11 릴리즈 — 개발자가 알아아야 할 핵심 정리

노동1호 2026. 5. 4. 01:04

pnpm v11 — 더 빠르고 안전한 패키지 매니저

pnpm v11 릴리즈 — 개발자가 알아야 할 핵심 정리

pnpm이 Major 버전 11로 업데이트되었습니다. 이번 릴리즈는 성능, 보안, 개발자 경험 모두에서 의미 있는 진화를 가져왔습니다. 특히 supply chain 공격 방어 강화, SQLite 기반 저장소 인덱스 도입, 네이티브 퍼블리시 흐름 구현 등이 핵심 변화입니다. 이 글에서는 pnpm v11의 주요 변경점을 쉽게 정리합니다.

pnpm v11에서 달라진 것

Node.js 22 이상 필수

pnpm v11은 Node.js 22 이상만을 지원합니다. Node.js 18, 19, 20, 21 사용자는 반드시 업그레이드해야 합니다. 또한 pnpm 자체가 순수 ESM(ECMAScript Module)으로 전환되었으며, standalone 실행 파일은 glibc 2.27 이상이 필요합니다.

공급망 보안 기본값 강화

이전 v10 사이클에서 도입된 보안 기본값이 더 엄격해졌습니다.

설정새 기본값
minimumReleaseAge1440 (1일)
blockExoticSubdepstrue
strictDepBuildstrue
optimisticRepeatInstalltrue
verifyDepsBeforeRuninstall

새로 게시된 패키지는 최소 1일이 지나야 설치 대상이 됩니다. 이를 통해 supply chain 공격의 위험을 줄일 수 있습니다.

빌드 설정 단순화: allowBuilds로 통합

이전 버전의 복잡한 빌드 관련 설정이 단일 allowBuilds 맵으로 통합되었습니다.

# 기존 설정 (v10)onlyBuiltDependencies:- electrononlyBuiltDependenciesFile: "allowed-builds.json"neverBuiltDependencies:- core-jsignoredBuiltDependencies:- esbuild# 새 설정 (v11)allowBuilds:electron: truecore-js: falseesbuild: false

.npmrc 분리: 인증 전용

.npmrc는 이제 레지스트리 URL과 인증 정보만 담습니다. pnpm 고유 설정은 pnpm-workspace.yaml 또는 새 전역 설정 파일 ~/.config/pnpm/config.yaml에 기록해야 합니다.

또한 npm_config_ 환경 변수 대신 pnpm_config_ 접두사를 사용해야 합니다. 예: pnpm_config_registry

네이티브 퍼블리시 흐름

pnpm publish, login, logout, view, deprecate, unpublish, dist-tag, version 명령어가 npm CLI에 의존하지 않고 네이티브로 재구현되었습니다. OTP 환경 변수도 NPM_CONFIG_OTP에서 PNPM_CONFIG_OTP로 변경되었습니다.

격리된 글로벌 설치

이제 pnpm add -g로 설치되는 글로벌 패키지는 각각 고유한 디렉토리를 가집니다. 경로는 {pnpmHomeDir}/global/v11/{hash}/ 형태입니다. 글로벌 패키지 간 peer 의존성 충돌, hoisting 변경, 버전 드리프트 문제가 해결됩니다.

# 이후 변경pnpm setup  # 쉘 환경 설정 업데이트 필수pnpm install -g  # 더 이상 지원 안 됨 → pnpm add -g 사용

새 명령어

명령어설명
pnpm cipnpm clean + pnpm install --frozen-lockfile
pnpm clean모든 workspace의 node_modules 제거
pnpm sbomSBOM 생성 (CycloneDX/SPDX)
pnpm peers check미충족 peer 의존성 확인
pnpm runtime set런타임 설치
pnpm with특정 버전으로 단일 실행

성능 개선: Store v11

저장소 인덱스가 SQLite 기반이면서 MessagePack 값과 WAL 모드를 사용합니다. 기존 수백만 개의 JSON 파일 대신 $STORE/index.db 단일 데이터베이스를 사용합니다.

번들 매니페스트(패키지 이름, 버전, bin, engines 등)가 인덱스에 직접 저장되어 CAS에서 package.json을 읽을 필요가 없습니다. Hex digest를 사용하여 매 CAS 조회 시 base64 → hex 변환도 줄어듭니다.

HTTP 계층에서는 undici가 node-fetch를 대체하고, tarball 다운로드 시 사전 메모리 할당이 적용됩니다.

마이그레이션 가이드

대부분의 설정 변경은 기계적이며, pnpm-v10-to-v11 codemod로 자동 적용할 수 있습니다. 자세한 가이드는 공식 마이그레이션 문서를 참고하세요.

# 전역 pnpm 업그레이드npm install -g pnpm# 버전 확인pnpm --version

마무리

pnpm v11은 보안 강화, 성능 개선, 설정 단순화 세 가지 방향으로 꾸준히 발전해온 Major 버전입니다. 특히 supply chain 공격 방어 기본값 강화와 SQLite 기반 저장소 인덱스는 대규모 프로젝트에서 체감할 수 있는 실질적 개선입니다. 기존 프로젝트가 있다면 마이그레이션 가이드를 참고하여 점진적으로 적용해 보세요.


핵심 요약

Node.js 22+ 필수, pnpm 자체는 순수 ESM 전환

공급망 보안 강화: minimumReleaseAge 기본 1일, blockExoticSubdeps 기본 true

빌드 설정: allowBuilds로 단순화

.npmrc: 인증/레지스트리 전용으로 분리

저장소: SQLite 인덱스로 변경, 성능 대폭 개선

글로벌 설치: 격리된 환경으로 충돌 해결

새 명령어: pnpm ci, clean, sbom 등 추가


📚 출처