开发者磁盘清理

旧项目的 node_modules、target、build 目录怎么批量清理

找出旧项目里可以重新生成的依赖和构建目录,用命令或浣熊管家批量清理,同时避开虚拟环境和被 Git 跟踪的文件。

发布于 2026/10/29作者 浣熊管家团队

打开一个旧项目算一下就会发现,源码可能只有几十 MB,node_modules、Rust 的 target、Gradle 的 build 却动辄几百 MB 到几 GB。项目一多,这些能重新生成的目录就成了磁盘里最大的一块。下面帮你判断哪些目录可以删、怎么用命令批量找出来,以及用浣熊管家批量清理时它会怎样保护你的项目。

哪些目录可以重新生成

生态常见目录恢复方法
Node.jsnode_modules、.next/cache、.nuxt、.turbonpm ci、pnpm install 或 yarn install
Rusttargetcargo build
Gradle、Androidbuild、.gradle重新构建
Maventarget重新构建
Swift Package.buildswift build
CocoaPodsPodspod install
Flutter、Dartbuild、.dart_toolflutter pub get 后重新构建
Python__pycache__、.pytest_cache、.mypy_cache、.ruff_cache、.tox工具运行时自动生成
PHPvendorcomposer install
.NETbin、objdotnet build

能原样恢复的前提是项目里有锁文件,例如 package-lock.json、pnpm-lock.yaml、yarn.lock、Cargo.lock、Podfile.lock、composer.lock,这样重新安装得到的版本和删除前一致。

删除前的风险

  • 虚拟环境要先记下依赖:Python 的 .venv、venv 可以重建,前提是 requirements.txt 或锁文件记录了依赖。没有记录时先导出:pip freeze > requirements.txt。
  • 有些构建目录里有手写文件:个别项目会把配置、密钥或手写脚本放进 build、target,甚至提交进 Git。删除前看一眼目录里有没有被跟踪的文件。
  • 老项目可能装不回来:依赖的包可能已被下架,旧版工具链也可能装不上。还要维护的老项目,先确认能重新安装再删。
  • pnpm 项目释放得少:pnpm 项目的 node_modules 和全局存储共用数据块,删掉后实际释放的空间可能比显示的小。

手动批量清理

先找出来

假设你的项目都在 ~/Projects 下。下面的命令列出所有 node_modules 和 target 目录及其大小,-prune 让 find 不再进入这些目录内部,速度会快很多:

find ~/Projects -type d \( -name node_modules -o -name target \) -prune -print0 \
  | xargs -0 du -sh 2>/dev/null | sort -h

想只看很久没动过的项目,可以加上时间条件。node_modules 目录的修改时间大致对应最后一次安装依赖的时间,只能作参考:

# 列出 90 天内没有重新安装过依赖的 node_modules
find ~/Projects -type d -name node_modules -prune -mtime +90 -print
# 确认清单无误后再删除,rm -rf 不经过废纸篓
find ~/Projects -type d -name node_modules -prune -mtime +90 -exec rm -rf {} +

用工具自带的清理命令

在单个项目里,优先用工具自己的命令,它们知道哪些文件是自己生成的:

cargo clean            # 删除 Rust 项目的 target
./gradlew clean        # 删除 Gradle 项目的构建输出
mvn clean              # 删除 Maven 项目的 target
flutter clean          # 删除 Flutter 项目的 build 和 .dart_tool
swift package reset    # 删除 Swift Package 的 .build

用 Git 预览被忽略的文件

如果项目用 Git 管理,.gitignore 里列的大多是能重新生成的内容。git clean -X 只删除被忽略的文件,先用 -n 预览:

# 预览:列出将被删除的被忽略文件和目录
git clean -ndX
# 确认清单无误后再执行
git clean -fdX

注意

.env、本地配置和编辑器设置通常也在 .gitignore 里。预览清单中出现这些文件时,先把它们移走,或者改用前面的 find 命令只删指定目录。

用浣熊管家批量清理

浣熊管家的深度清理把这类目录归在 项目构建产物 类别,覆盖三十多种工具和框架,按生态分成 Node.js 构建产物、Rust 构建产物、Python 构建产物、Gradle 构建产物 等条目。它通过 package.json、Cargo.toml、pom.xml、Podfile 这类标志文件识别项目,只列出对应工具会生成的目录。展开条目可以看到每个目录的路径、大小、文件数和最近修改时间,并逐个勾选。

这一类不会被 智能推荐 预先勾选,也不按时间自动筛选,清哪个项目由你决定。

浣熊管家会去哪里找项目

  • 标准扫描:查找个人文件夹下的各个文件夹(隐藏文件夹和资源库等应用数据目录除外),并按项目文件夹的修改时间只保留最近的一批项目,目前最多 96 个。项目很多时,很久没动过的项目可能不在结果里。
  • 选择磁盘:系统盘始终扫描,还可以勾选外接磁盘等其他磁盘,在其中查找项目,不受上面的数量限制。整理旧项目时建议用这种方式。

桌面、文稿和下载文件夹受 macOS 隐私保护,如果你拒绝了访问,这些位置会被跳过。想保护某个项目,把它的文件夹加到 设置 → 扫描与分析 → 扫描排除 的 指定路径 中,路径排除对项目构建产物生效。

自动跳过的内容

  • 构建目录里有被 Git 跟踪的文件、.git 目录或 *-keypair.json 这类密钥文件时,浣熊管家不会清理它,结果中显示 无法完整读取,未加入清理。项目位于 Git 仓库中、而这台 Mac 上找不到 Git 时,同样不清理。
  • 清理前会重新检查项目和目录,条件不再满足的目录会被跳过。
  • Python 的 .venv、venv 不在清理范围内,Python 构建产物 只包括 __pycache__、.pytest_cache 这类工具缓存。Node.js 项目的 dist、build 输出目录也不在其中。

清理会直接删除,不进入废纸篓,结果记录在操作历史中。全局的 npm、pnpm 缓存是另一类内容,见 npm、pnpm、Yarn 缓存的清理方法;Xcode 的 DerivedData 见 Xcode 存储清理。

想先看看旧项目里有多少可清理的内容,可以下载浣熊管家扫描一次,扫描本身不会删除任何内容。下面的演示窗口使用示例数据,其中的条目和数值仅作示意。

深度清理

Macintosh HD32.76 GB 可用
发现 33 项可清理内容估算可清理79.3 GB
系统缓存
已选 / 发现可清理554 MB/ 554 MB全选
旧的诊断日志低风险系统和应用留下的旧诊断报告 313 MB
长期未使用的系统缓存低风险当前用户超过 7 天未更新的系统缓存 241 MB
旧临时文件低风险系统和应用使用时留下的临时文件 394 KB
已选择项目21 项预计释放空间41.5 GB
选择方式
交互演示 · 所有数据均为模拟数据

常见问题

删除 node_modules 后怎么恢复?

在项目目录里运行安装命令即可,例如 npm ci、pnpm install 或 yarn install。有 package-lock.json 时,npm ci 会严格按锁文件安装。

浣熊管家会删到源码吗?

不会。它只删除规则中列出的目录,这些目录必须位于能识别的项目里,含有被 Git 跟踪文件的目录会被跳过。

外接硬盘上的项目能清理吗?

能。点 开始扫描 右侧的箭头,选择 选择磁盘,勾选那块磁盘后开始扫描。

相关文章