一、基础查看 & 信息类
# 查看pnpm版本
pnpm -v
# 查看当前项目依赖树(展开)
pnpm ls
# 只看生产依赖,不看dev依赖
pnpm ls --prod
# 查看包的详细信息(npm包信息、版本、依赖)
pnpm info dayjs
# 检查依赖是否有版本冲突、冗余
pnpm audit
# 检查哪些包存在安全漏洞,并给出修复建议
pnpm audit --fix
二、依赖更新相关(非常常用)
# 更新所有依赖到兼容的最新版本(依据package.json ^版本)
pnpm update
# 更新指定包
pnpm update dayjs
# 递归更新所有workspace子包的依赖
pnpm -r update
# 升级到大版本(会修改package.json版本号,谨慎使用!)
pnpm add dayjs@latest
# 交互式选择升级包(推荐,手动挑选要升级的包)
pnpm update -i
三、开发依赖安装(开发工具、类型、eslint、构建插件)
# -D / --save-dev:安装为开发依赖(仅开发环境用,打包不打入)
pnpm add eslint -D
# monorepo:给根目录安装开发依赖
pnpm add eslint -D -w
# filter 指定子包安装开发依赖
pnpm --filter app-one add eslint -D
四、清理、缓存、锁文件
# 清理项目 node_modules + pnpm-lock.yaml(重装前清理)
pnpm remove-all
# 删除全局pnpm缓存(解决缓存损坏、包异常)
pnpm store prune
# 只删除当前项目node_modules
rm -rf node_modules
# pnpm 原生删除当前目录node_modules
pnpm exec rm -rf node_modules
# 重新生成lock文件(修改package.json后,同步lock)
pnpm install --lockfile-only
五、执行脚本 / 二进制命令(pnpm exec)
# 在当前包执行命令,调用node_modules里的二进制(不用全局装)
pnpm exec vite
pnpm exec eslint .
# workspace:所有子包执行同一个脚本(package.json scripts)
pnpm -r run build
# filter:只在app-one执行脚本
pnpm --filter app-one run dev
六、workspace 辅助查看命令
# 列出当前workspace所有子包名称、路径
pnpm workspace list
# 查看某个子包依赖为什么被安装(溯源依赖)
pnpm why dayjs
# 递归查看全仓库,哪个包依赖了 dayjs
pnpm -r why dayjs
七、链接 / 本地调试包(本地包调试,monorepo 外也能用)
# 把本地包链接到全局,方便跨项目调试
pnpm link ../packages/my-utils
# 取消本地link
pnpm unlink my-utils
八、锁文件操作
# 安装依赖,不修改lock文件
pnpm install --frozen-lockfile
# CI流水线强烈推荐,保证环境完全一致,不自动升级依赖
补充速查备注(加到你的笔记)
-D=--save-dev:开发依赖,打包不会打进产物;业务库、运行时组件不要用 - D。--frozen-lockfile:CI 必用。lock 文件固定,不会自动更新版本,保证构建环境稳定。pnpm why:排查版本冲突、幽灵依赖神器,定位是谁引入了某个包。pnpm audit:安全扫描,定期执行检查依赖漏洞。-r递归、--filter过滤:monorepo 最核心的两个修饰符,几乎所有命令都可以追加。
极简符号备忘
-w:安装到 workspace 根-D:开发依赖 devDependencies-r:recursive 递归所有子包--filter xxx:仅在指定子包执行
以上的命令可以自己测试下,以实测为准。