すべてのチートシート

pnpm チートシート

pnpm を素早く参照:install / add / remove / update、スクリプト、ワークスペース、ストア / キャッシュ、設定 — GitHub サイトの pnpm リポジトリ運用を中心に、よく使うオプションと実用例をまとめました。

31 コマンド

導入 / 管理

pnpm install

package.json に宣言されたすべての依存をインストールし、必要に応じて lockfile を更新します。

--frozen-lockfile(このリポジトリでは 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 グローバル; --workspace-root ワークスペース ルートへ追加

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

グローバル ツール(TypeScript、ESLint、tsx など)をパスへ導入します。

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

pnpm add -g typescript tsx
pnpm remove <pkg>

プロジェクトと lockfile から依存を削除します。

-D devDependencies から; -g グローバルから; --filter pkg 特定ワークスペースのみ削除

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

古いパッケージを現在 / 必要 / 最新バージョンと共に表示します。

--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 本番のみ; --json

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

可能なら 1 バージョンに巻き上げ、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 1 件指定; --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 対象ワークスペース; --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

ワークスペース

pnpm -r <cmd>

ワークスペース内の全パッケージに対して再帰的に pnpm 操作を実行。

-r run build; --parallel; --topology ソート; --order

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

名前 / ディレクトリ / glob / ./相対パスで 1 パッケージを指定。

--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

ワークスペース共有の巻き上げ dev 依存を追加します。

-w / --workspace-root; -D devDependencies へ

pnpm add -Dw typescript

ストア / キャッシュ

pnpm store path

pnpm のコンテンツ アドレス可能ストアの場所を表示(プロジェクト間で重複排除)。

store path; --virtual-store-dir DIR

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

ストアから参照されていないパッケージを削除(ディスク使用量を削減)。

store prune; --force プロンプトをスキップ

pnpm store prune
pnpm cache list / cache delete

pnpm のメタデータ キャッシュを一覧 / 削除。

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

pnpm cache list vitest@latest

設定 / Info

pnpm config get|set <key> [value]

ユーザー / グローバル / ストア / プロジェクトの 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

有効な設定キーを一覧、または 1 件削除。

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(./ を使用); link --global <pkg>; --dir

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

公開 / 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

ワークスペース全体の依存ツリーを一括で調査します。

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

1 ワークスペースのみスクリプトを実行 — きめ細かい CI に最適。

--filter dependencies / dependents; --parallel

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

このサイトのヘルパー:ツール翻訳を Nuxt アプリへ同期し、ツール バンドルをビルド。

pnpm sync:tools && pnpm build:tools

チートシート バージョン 1.0.0

pnpm 9+ に対応