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-lockfilepnpm add <pkg>添加一个运行时依赖并写入 package.json。
-D / --save-dev;-E / --save-exact;-O / --save-optional;-P / --save-prod;-g 全局;--workspace-root 安装到工作区根
pnpm add -D vitest @types/nodepnpm add -g <pkg>全局安装一个工具(如 TypeScript、ESLint、tsx),加入 PATH。
-g;--global-prefix;--reporter append|ndjson
pnpm add -g typescript tsxpnpm remove <pkg>从项目与 lockfile 中移除一个依赖。
-D 从 devDependencies 中移除;-g 从全局移除;--filter 仅从某个工作区中移除
pnpm remove lodash && pnpm remove -F web -D @types/jestpnpm update / pnpm update -L在 semver 范围内更新依赖;-L / --latest 升级到最新版本。
-L / --latest;-i / --interactive;--workspace-root;--filter
pnpm update -i vue && pnpm update -L @nuxt/i18npnpm outdated展示过期包及其 current / wanted / latest 版本。
--long;--recursive / -r;--filter
pnpm outdated -r --longpnpm list列出已安装的包及其依赖关系树。
--depth 0 仅直接依赖;--prod / --dev;-r 递归;--json | jq
pnpm list --depth 0 --prod | head -20pnpm audit / pnpm audit --fix对 lockfile 执行 npm 风格的安全公告检查。
--prod 仅生产;--json
pnpm audit --json | jq '.metadata.vulnerabilities'pnpm dedupe在可行的情况下将依赖提升到同一版本,从而裁剪 lockfile 与依赖树。
--check;--strict-peer-dependencies=false
pnpm dedupe --checkpnpm rebuild重新构建 native 依赖(Node 版本升级后或包发布后)。
--reporter;--recursive;--filter
pnpm rebuild -r && pnpm rebuild esbuildpnpm approve-builds为 native 包(如 esbuild、sharp、@swc/core)批准其 build 脚本。
交互式提示;也可在 package.json#pnpm.onlyBuiltDependencies 中设置
pnpm approve-builds --yes esbuild @parcel/watcherpnpm 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 buildpnpm dlx <pkg>从 registry 拉取一个包并直接运行其二进制,无需永久安装。
dlx pkg args;--package 额外包;--silent
pnpm dlx create-vite@latest my-app --template vue-ts && pnpm dlx vitest --runpnpm exec <cmd>在项目上下文中执行命令(PATH 已包含 .node_modules/.bin)。
exec ...;--filter 目标工作区;--recursive;--parallel
pnpm exec vitest run && pnpm exec -- tsc --noEmit -p src/www/tsconfig.jsonpnpm 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 --silentpnpm --filter <pkg>按包名、目录、glob 或相对路径定位单个包。
--filter pkg | --filter ./packages/foo | --filter {pkg} 仅严格匹配包名;-F 别名
pnpm --filter trowsoft-pdf-merge run build && pnpm -F "./packages/tools/*" outdatedpnpm add ... -w / --workspace-root在工作区根添加一个提升的、可被所有包共用的 dev 依赖。
-w / --workspace-root;-D 加入 devDependencies
pnpm add -Dw typescriptStore 与缓存
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 prunepnpm 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 registrypnpm config delete|list列出所有生效的配置项,或删除某一项。
config list --location project;config delete key
pnpm config list --location projectpnpm why <pkg>解释一个包为何出现在 node_modules 中——显示其依赖链。
--prod;--dev;-r;--filter
pnpm why -r vue && pnpm why lodash -rpnpm 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 publicpnpm 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 0pnpm run --filter <pkg> test只在某一个工作区中执行脚本——适合细粒度的 CI 场景。
--filter 配合 dependencies/dependents;--parallel
pnpm --filter "trowsoft-pdf-*" run build --parallelpnpm sync:tools / pnpm build:tools本仓库的辅助脚本——同步工具翻译到 Nuxt 应用,然后构建工具产物。
pnpm sync:tools && pnpm build:tools速查页版本 1.0.0
适用于 pnpm 9+