AskCleanAskClean问净

如何在 Mac 上安全清除 npm 缓存

AskClean 团队 · 更新于 2026-08-05

先运行 npm config get cache 找到当前缓存,再测量该路径并执行 npm cache verify。只有确实需要磁盘空间、且接受以后重新下载依赖时,才运行 npm cache clean --force。它不会删除 node_modules、package.json 或锁文件;也不应和删除这些项目文件混成一次操作。

等距视角的 npm 包归档流经已验证缓存,旁边的项目文件受到保护
npm 缓存保存可复用下载;项目清单、锁文件和已安装的 node_modules 属于不同数据。

npm 缓存不是项目依赖树

npm 默认把跨项目复用的内容寻址下载缓存放在 ~/.npm,但配置可能改变位置。node_modules 是某个项目实际安装的依赖,package.json 和 package-lock.json 则定义依赖;它们都不是缓存。清缓存不会删除现有 node_modules,删除 node_modules 也不会清掉 npm 缓存。

先找到、测量并验证 npm 实际使用的缓存

不要因为 ~/.npm 存在就认定它正在使用。用 npm --version 和 npm config get cache 获取版本与真实路径,对输出的准确路径运行 du -sh,再执行 npm cache verify。verify 会检查索引和内容完整性、清理不需要的数据,同时保留有效下载;一般维护或安装故障都应从这里开始。

  1. 运行 npm --version 和 npm config get cache,确认输出是缓存目录而不是项目目录。
  2. 对输出的准确路径运行 du -sh,并记录 macOS 剩余空间;不要把猜测的路径交给 rm -rf。
  3. 停止正在执行 npm install、npm ci、npm exec 或发布的进程,然后运行 npm cache verify 并保存结果。
  4. 只有测量后仍值得清理、且后续网络与依赖源可用时,才运行 npm cache clean --force。
  5. 再次运行 npm cache verify、测量同一路径,并以未改动的 package.json 和锁文件安装、构建一个代表性项目。

不要同时清缓存和删除锁文件,否则缓存状态与依赖解析一起变化,会失去诊断原问题所需的对照;离线工作前也应保留可用缓存。

只在有理由时运行强制清理

npm cache clean --force 会清除配置所指的共享缓存,丢掉离线与 prefer-offline 可复用的下载;之后多个项目的首次安装会更慢,并依赖 registry、私有源、代理和网络可用。只在这条命令中使用 --force,不要把 force 设成持久配置。它不能修复 ERESOLVE、认证、引擎、原生编译或安装脚本错误。

保护锁文件、离线能力并验证结果

清理期间保持源码、package.json、package-lock.json 与私有 registry 配置不变。npm v12 已不再读取 npm-shrinkwrap.json;旧项目需要把格式相同的文件重命名为 package-lock.json,不能把它当缓存删除。清理后重跑 npm config get cache、npm cache verify 和 du,并用一个代表性项目按原锁文件安装、构建;同一错误仍出现时应停止反复清缓存。

清理边界与恢复成本

找到并测量 npm 在 macOS 上实际使用的下载缓存,先验证、必要时再清除,同时保护 node_modules、package.json 和锁文件。

项目或操作检查位置删除后果
npm 缓存不是项目依赖树npm config get cachenpm 默认把跨项目复用的内容寻址下载缓存放在 ~/.npm,但配置可能改变位置。node_modules 是某个项目实际安装的依赖,package.json 和 package-lock.json 则定义依赖;它们都不是缓存。清缓存不会删除现有 node_modules,删除 node_modules 也不会清掉 npm 缓存。
先找到、测量并验证 npm 实际使用的缓存npm cache verify不要因为 ~/.npm 存在就认定它正在使用。用 npm --version 和 npm config get cache 获取版本与真实路径,对输出的准确路径运行 du -sh,再执行 npm cache verify。verify 会检查索引和内容完整性、清理不需要的数据,同时保留有效下载;一般维护或安装故障都应从这里开始。
只在有理由时运行强制清理npm cache clean --forcenpm cache clean --force 会清除配置所指的共享缓存,丢掉离线与 prefer-offline 可复用的下载;之后多个项目的首次安装会更慢,并依赖 registry、私有源、代理和网络可用。只在这条命令中使用 --force,不要把 force 设成持久配置。它不能修复 ERESOLVE、认证、引擎、原生编译或安装脚本错误。
保护锁文件、离线能力并验证结果install + offline/private-registry check清理期间保持源码、package.json、package-lock.json 与私有 registry 配置不变。npm v12 已不再读取 npm-shrinkwrap.json;旧项目需要把格式相同的文件重命名为 package-lock.json,不能把它当缓存删除。清理后重跑 npm config get cache、npm cache verify 和 du,并用一个代表性项目按原锁文件安装、构建;同一错误仍出现时应停止反复清缓存。

常见问题

应该用 npm cache verify 还是 npm cache clean?

先用 npm cache verify。只有为了已测量的空间回收,或 verify 无法解决的确定缓存故障,才使用 npm cache clean --force。

清除 npm 缓存会删除 node_modules 吗?

不会。前者是配置所指的共享下载存储,后者是项目内的已安装依赖,需要单独处理。

清缓存后安装为什么仍然失败?

问题可能来自认证、网络或代理、包版本不可用、Node.js 引擎、依赖解析、原生编译或生命周期脚本。保存第一条有效错误并诊断,不要反复删除有效下载。

参考来源

继续清理开发者存储