npm、pnpm、Yarn 缓存怎么清理,不影响项目
分清全局缓存和项目里的 node_modules,用官方命令清理 npm、pnpm、Yarn 缓存,并避开几个容易踩的坑。
发布于 2026/10/29作者 浣熊管家团队
装的依赖越多,包管理器在你的用户目录里攒下的缓存就越大,几个 GB 到几十 GB 都很常见。这些缓存设计上就可以删除,删掉后最多是下次安装时重新下载;不过有几种情况,它们并不只是缓存。下面按 npm、pnpm、Yarn 逐个说明位置、命令和注意事项。
缓存和 node_modules 不是一回事
全局缓存是包管理器下载过的软件包的本地副本,所有项目共用,删除后不会改动项目文件。node_modules 是每个项目实际安装的依赖,删除后项目要重新安装才能运行。这篇文章讲前者;旧项目里的 node_modules 怎么批量清理,见旧项目构建目录的批量清理。
缓存都放在哪里
| 工具 | macOS 上的默认位置 |
|---|---|
| npm | ~/.npm/_cacache,npx 临时安装的工具在 ~/.npm/_npx |
| pnpm | 存储在 ~/Library/pnpm/store,元数据缓存在 ~/Library/Caches/pnpm |
| Yarn 1 | ~/Library/Caches/Yarn |
| Yarn 2 及以上 | 默认启用全局缓存,位于 ~/.yarn/berry/cache |
| Bun | ~/.bun/install/cache |
| Corepack | ~/.cache/node/corepack |
如果你改过配置,以各工具命令报告的位置为准,下文会给出查看方法。
清理前要知道的几点
- 会重新下载:清掉缓存后,下次安装要重新从网络获取。离线开发、网络慢或者依赖私有源的场景,清理前先想好。
- pnpm 的空间是共享的:在 APFS 磁盘上,pnpm 默认用写时复制的克隆把存储里的文件放进项目,项目的
node_modules和存储共用同一批数据块。只删其中一边,实际释放的空间都可能小于显示的大小。 - 全局安装可能依赖存储:按 pnpm 文档,较新版本中用
pnpm add -g安装的全局包默认通过存储目录下的links运行,整个删掉存储后要重新安装这些全局工具。Bun 的globalStore(默认关闭)开启后也一样,相关项目需要重新运行bun install。 - Yarn PnP 项目直接读缓存:使用 Plug'n'Play 的 Yarn 项目没有
node_modules,依赖就是缓存里的 zip 文件。清掉缓存后,要先运行yarn install才能启动项目。
手动清理命令
npm
# 查看缓存根目录,默认是 ~/.npm
npm config get cache
du -sh ~/.npm/_cacache ~/.npm/_npx
# 校验缓存并回收无用数据,不会清空
npm cache verify
# 清空下载缓存 _cacache,项目里的 node_modules 不受影响
npm cache clean --force
# 删除 npx 临时安装的工具,下次运行时会重新下载
rm -rf ~/.npm/_npx
npm 的缓存会自我修复,官方文档明确说,除了腾出磁盘空间,没有必要清空它。遇到安装报错时,先试 npm cache verify。
pnpm
# 查看当前存储位置,例如 ~/Library/pnpm/store/v10
pnpm store path
du -sh "$(pnpm store path)"
# 只删除没有任何项目引用的包
pnpm store prune
# 元数据缓存可以直接删除,pnpm 会按需重新下载
rm -rf ~/Library/Caches/pnpm
pnpm 文档说明,pnpm store prune 不会影响你的项目,建议偶尔运行、不要太频繁,因为刚删掉的包可能很快又要用到。pnpm 每块磁盘使用一个存储:项目放在外接磁盘上时,存储通常在那块磁盘根目录的 .pnpm-store,在该项目里运行 pnpm store path 就能看到。
Yarn
Yarn 1 和 Yarn 2 及以上的命令不同,先用 yarn --version 确认当前目录下生效的版本。
# Yarn 1:查看并清空全局缓存
yarn cache dir
yarn cache clean
# Yarn 2 及以上:在使用该版本的项目目录中运行,只清空全局缓存
yarn cache clean --mirror
yarn cache clean --all 会同时删除当前项目的本地缓存。如果项目把 .yarn/cache 提交进了仓库(零安装),不要在这个项目里用 --all。
Bun 和 Corepack
# 显示 Bun 的全局缓存位置
bun pm cache
# 清空 Bun 的全局缓存
bun pm cache rm
# 删除 Corepack 下载的包管理器版本,下次使用时重新下载
rm -rf ~/.cache/node/corepack
用浣熊管家清理
深度清理的 标准扫描 会检查这些缓存的默认位置,按所在目录分在两个类别中:
- 开发工具:npm 下载缓存、npx 临时工具缓存、Bun 软件包缓存。
- 用户缓存文件:pnpm 存储缓存(包括存储和元数据缓存)、Yarn 下载缓存(Yarn 1 和 Yarn 2 及以上的全局缓存)、node-gyp 构建缓存,以及 Corepack、Electron 等下载的 Node.js 工具链缓存。这些条目涉及
~/Library/Caches下的目录,所以归在这里。
智能推荐 会预先勾选 npm、npx 和 node-gyp 这几项;pnpm 存储、Yarn、Bun 和 Node.js 工具链缓存需要你手动勾选。浣熊管家清理时会删除整个缓存或存储目录,效果相当于清空,而不是像 pnpm store prune 那样只删未被引用的包。如果你依赖 pnpm 的全局安装,或者有使用 PnP 的 Yarn 项目,请先读上面的注意事项,再决定要不要勾选。
说明
浣熊管家只检查默认位置,改过路径的缓存和其他磁盘上的 pnpm 存储不会被找到。项目里的 node_modules 归在 项目构建产物 类别,不会被预先勾选。清理会直接删除,不进入废纸篓,结果记录在操作历史中。
想看看这些缓存在你的 Mac 上有多大,可以下载浣熊管家运行一次扫描,扫描本身不会删除任何内容。下面的演示窗口使用示例数据,其中的条目、类别和勾选状态仅作示意。
深度清理
常见问题
清理缓存后,项目还能正常运行吗?
能。依赖已经安装在各项目的 node_modules 里,删除全局缓存不会改动它们,下次安装时多花点下载时间而已。例外是上面提到的 Yarn PnP 项目,以及依赖存储运行的 pnpm 全局工具。
多久清一次合适?
没有必要定期清空。磁盘紧张时清一次,或者每隔几个月运行一次 pnpm store prune、npm cache verify 就够了。
为什么删掉 pnpm 存储后,空间没有减少那么多?
因为还在使用的 node_modules 仍然引用同一批数据块。把不再使用的旧项目的 node_modules 一起清掉,这部分空间才会真正释放。
相关文章
开发者磁盘清理发布于 2026/10/29
旧项目的 node_modules、target、build 目录怎么批量清理
找出旧项目里可以重新生成的依赖和构建目录,用命令或浣熊管家批量清理,同时避开虚拟环境和被 Git 跟踪的文件。
开发者磁盘清理发布于 2026/10/29
Xcode 占用几十 GB:DerivedData、模拟器、设备支持文件怎么清
看清 Xcode 的空间花在哪里,DerivedData、模拟器、运行时和设备支持文件哪些能删、怎么删,哪些必须保留。
开发者磁盘清理发布于 2026/10/29
Docker Desktop 在 Mac 上占用太大,怎么回收空间
弄清 Docker Desktop 的虚拟磁盘里装了什么,用官方命令清理构建缓存、镜像和容器,同时保住数据卷里的数据。