全部速查表

pnpm 命令速查

pnpm 快速參考:install / add / remove / update、scripts、workspaces、store 與 cache、config——聚焦於 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 安裝到 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 從全域;--filter pkg 僅從單一 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

顯示過期的套件及其目前/目標/最新版本。

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

盡可能將重複的依賴提升為單一版本,精簡 lockfile/依賴樹。

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

pnpm dedupe --check
pnpm rebuild

重新建置原生依賴(升級 Node 後或需要 post-build 時)。

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

執行與開發體驗

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>

從 registry 取得套件並執行其可執行檔,無需永久安裝。

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 共用的提升式 dev 依賴。

-w / --workspace-root;-D 加入 devDeps

pnpm add -Dw typescript

Store 與快取

pnpm store path

輸出 pnpm 內容定址 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(使用 ./);link --global <pkg>;--dir

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

發佈與打包

pnpm publish

將目前套件發佈到設定好的 registry。

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

本倉庫的輔助指令——將工具翻譯同步進 Nuxt 應用,接著建置工具套件。

pnpm sync:tools && pnpm build:tools

速查頁版本 1.0.0

適用於 pnpm 9+