전체 치트시트

pnpm 명령어 치트시트

pnpm 빠른 참조: install / add / remove / update, scripts, workspaces, store & cache, config — 이 GitHub 사이트의 pnpm 워크플로에 맞춰 옵션과 실전 예시까지 정리했습니다.

명령어 31개

설치 & 관리

pnpm install

package.json 의 모든 의존성을 설치하고 필요 시 lockfile 을 갱신합니다.

--frozen-lockfile (이 repo 의 CI 기본값); --prod; --offline; --ignore-scripts; --shamefully-hoist; --strict-peer-dependencies=false; --prefer-offline

pnpm install --frozen-lockfile
pnpm add <pkg>

런타임 의존성을 추가하고 package.json 에 기록합니다.

-D / --save-dev; -E / --save-exact; -O / --save-optional; -P / --save-prod; -g global; --workspace-root workspace 루트에 추가

pnpm add -D vitest @types/node
pnpm add -g <pkg>

전역 도구(예: TypeScript, ESLint, tsx) 를 PATH 에 설치합니다.

-g; --global-prefix; --reporter append|ndjson

pnpm add -g typescript tsx
pnpm remove <pkg>

프로젝트와 lockfile 에서 의존성을 제거합니다.

-D devDependencies 에서; -g globals 에서; --filter 지정 workspace 에서만 제거

pnpm remove lodash && pnpm remove -F web -D @types/jest
pnpm update / pnpm update -L

semver 범위 내에서 의존성을 업데이트; -L / --latest 는 최신 버전으로 업그레이드.

-L / --latest; -i / --interactive; --workspace-root; --filter

pnpm update -i vue && pnpm update -L @nuxt/i18n
pnpm outdated

오래된 패키지를 현재 / wanted / latest 버전과 함께 표시합니다.

--long; --recursive / -r; --filter

pnpm outdated -r --long
pnpm list

설치된 패키지와 그것에 의존하는 트리를 나열합니다.

--depth 0 직접 의존성만; --prod / --dev; -r 재귀; --json | jq

pnpm list --depth 0 --prod | head -20
pnpm audit / pnpm audit --fix

lockfile 에 대해 npm 스타일 보안 권고 검사를 실행합니다.

--prod production 만; --json

pnpm audit --json | jq '.metadata.vulnerabilities'
pnpm dedupe

가능하면 단일 버전으로 호이스팅해 lockfile/의존성 트리를 가지치기합니다.

--check; --strict-peer-dependencies=false

pnpm dedupe --check
pnpm rebuild

네이티브 의존성을 재빌드합니다(빌드 후 / Node 버전 변경 후).

--reporter; --recursive; --filter

pnpm rebuild -r && pnpm rebuild esbuild
pnpm approve-builds

네이티브 패키지(esbuild, sharp, @swc/core 등)의 빌드 스크립트를 승인합니다.

인터랙티브 프롬프트; package.json#pnpm.onlyBuiltDependencies 로도 설정 가능

pnpm approve-builds --yes esbuild @parcel/watcher
pnpm import

기존 package-lock.json / yarn.lock 을 pnpm-lock.yaml 로 가져옵니다.

import; 다른 파라미터 없음

pnpm import --no-lockfile

실행 & DX

pnpm run <script>

package.json#scripts 의 스크립트를 실행합니다.

-r / --recursive 모든 패키지에서; --filter / -F 단일 패키지 대상; --parallel; --no-color

pnpm run dev && pnpm -F src/www run build
pnpm dlx <pkg>

레지스트리에서 패키지를 가져와 영구 설치 없이 바이너리를 실행합니다.

dlx pkg args; --package 추가 패키지; --silent

pnpm dlx create-vite@latest my-app --template vue-ts && pnpm dlx vitest --run
pnpm exec <cmd>

프로젝트 컨텍스트에서 명령을 실행합니다(PATH 에 .node_modules/.bin 포함).

exec ...; --filter 대상 workspace; --recursive; --parallel

pnpm exec vitest run && pnpm exec -- tsc --noEmit -p src/www/tsconfig.json
pnpm create <name>

create-* 스타일 패키지로 새 프로젝트를 스캐폴드합니다.

create [name] [args]; -y / --yes

pnpm create nuxt my-app && cd my-app && pnpm install

Workspace

pnpm -r <cmd>

재귀 — workspace 의 모든 패키지에서 pnpm 액션을 실행합니다.

-r run build; --parallel; --topology 정렬; --order

pnpm -r --filter "./packages/**" run build --silent
pnpm --filter <pkg>

이름, 디렉터리, glob 또는 ./상대경로 로 단일 패키지를 대상으로 합니다.

--filter pkg | --filter ./packages/foo | --filter {pkg} 이름만 엄격; -F 별칭

pnpm --filter trowsoft-pdf-merge run build && pnpm -F "./packages/tools/*" outdated
pnpm add ... -w / --workspace-root

workspace 전체에 공유되는 호이스팅된 devDependency 를 추가합니다.

-w / --workspace-root; -D devDeps 로

pnpm add -Dw typescript

Store & Cache

pnpm store path

pnpm 의 content-addressable store 위치를 출력합니다(여러 프로젝트에서 중복 제거).

store path; --virtual-store-dir DIR

pnpm store path && du -sh $(pnpm store path)
pnpm store prune

참조되지 않는 패키지를 store 에서 제거합니다(디스크 사용량 감소).

store prune; --force 프롬프트 건너뛰기

pnpm store prune
pnpm cache list / cache delete

pnpm 의 메타데이터 캐시 항목을 나열하거나 삭제합니다.

cache list; cache delete <pkg>@<ver>; --registry

pnpm cache list vitest@latest

설정 & 정보

pnpm config get|set <key> [value]

사용자/전역/store/프로젝트 pnpm 설정을 읽거나 씁니다.

config get key; config set key val; --location project|user|global

pnpm config set registry https://registry.npmjs.org/ --location user && pnpm config get registry
pnpm config delete|list

유효한 모든 설정 키를 나열하거나 하나를 삭제합니다.

config list --location project; config delete key

pnpm config list --location project
pnpm why <pkg>

패키지가 node_modules 에 들어 있는 이유를 설명 — 의존 체인을 보여줍니다.

--prod; --dev; -r; --filter

pnpm why -r vue && pnpm why lodash -r
pnpm link / pnpm link --global

현재 프로젝트에 로컬 패키지를 심볼릭 링크하거나, 전역 패키지를 로컬에 설치합니다.

link (uses ./); link --global <pkg>; --dir

cd packages/tools/foo && pnpm link --global && cd my-app && pnpm link --global foo

Publish & Pack

pnpm publish

현재 패키지를 설정된 레지스트리로 게시합니다.

--dry-run; --tag alpha|beta|next; --access public|restricted; --otp N; --filter

pnpm publish --dry-run --tag canary --access public
pnpm pack

게시하지 않고 패키지 tarball 을 만듭니다(다른 곳에 업로드 용).

--pack-gzip-level 0..9; --pack-destination DIR

pnpm pack --pack-destination ./release

반복 워크플로

pnpm recursive list / pnpm -r why

모든 workspace 의 의존성 트리를 한 번에 살펴봅니다.

pnpm recursive list --depth 0
pnpm run --filter <pkg> test

단일 workspace 에서만 스크립트 실행 — 세밀한 CI 에 적합.

--filter dependencies/dependents 포함; --parallel

pnpm --filter "trowsoft-pdf-*" run build --parallel
pnpm sync:tools / pnpm build:tools

이 사이트의 repo 헬퍼 — 도구 번역을 Nuxt 앱에 동기화한 다음 도구 번들을 빌드.

pnpm sync:tools && pnpm build:tools

치트시트 버전 1.0.0

pnpm 9+ 대응