全部速查表

pnpm 命令速查

pnpm 快速参考:install / add / remove / update、脚本、工作区、store 与缓存、配置——针对 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),加入 PATH。

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

pnpm add -g typescript tsx
pnpm remove <pkg>

从项目与 lockfile 中移除一个依赖。

-D 从 devDependencies 中移除;-g 从全局移除;--filter 仅从某个工作区中移除

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

展示过期包及其 current / 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 仅生产;--json

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

在可行的情况下将依赖提升到同一版本,从而裁剪 lockfile 与依赖树。

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

pnpm dedupe --check
pnpm rebuild

重新构建 native 依赖(Node 版本升级后或包发布后)。

--reporter;--recursive;--filter

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

为 native 包(如 esbuild、sharp、@swc/core)批准其 build 脚本。

交互式提示;也可在 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 目标工作区;--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 或相对路径定位单个包。

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

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

一次性查看整个工作区的依赖树。

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

只在某一个工作区中执行脚本——适合细粒度的 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+