旧项目的 node_modules、target、build 目录怎么批量清理
找出旧项目里可以重新生成的依赖和构建目录,用命令或浣熊管家批量清理,同时避开虚拟环境和被 Git 跟踪的文件。
发布于 2026/10/29作者 浣熊管家团队
打开一个旧项目算一下就会发现,源码可能只有几十 MB,node_modules、Rust 的 target、Gradle 的 build 却动辄几百 MB 到几 GB。项目一多,这些能重新生成的目录就成了磁盘里最大的一块。下面帮你判断哪些目录可以删、怎么用命令批量找出来,以及用浣熊管家批量清理时它会怎样保护你的项目。
哪些目录可以重新生成
| 生态 | 常见目录 | 恢复方法 |
|---|---|---|
| Node.js | node_modules、.next/cache、.nuxt、.turbo | npm ci、pnpm install 或 yarn install |
| Rust | target | cargo build |
| Gradle、Android | build、.gradle | 重新构建 |
| Maven | target | 重新构建 |
| Swift Package | .build | swift build |
| CocoaPods | Pods | pod install |
| Flutter、Dart | build、.dart_tool | flutter pub get 后重新构建 |
| Python | __pycache__、.pytest_cache、.mypy_cache、.ruff_cache、.tox | 工具运行时自动生成 |
| PHP | vendor | composer install |
| .NET | bin、obj | dotnet 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 存储清理。
想先看看旧项目里有多少可清理的内容,可以下载浣熊管家扫描一次,扫描本身不会删除任何内容。下面的演示窗口使用示例数据,其中的条目和数值仅作示意。
深度清理
常见问题
删除 node_modules 后怎么恢复?
在项目目录里运行安装命令即可,例如 npm ci、pnpm install 或 yarn install。有 package-lock.json 时,npm ci 会严格按锁文件安装。
浣熊管家会删到源码吗?
不会。它只删除规则中列出的目录,这些目录必须位于能识别的项目里,含有被 Git 跟踪文件的目录会被跳过。
外接硬盘上的项目能清理吗?
能。点 开始扫描 右侧的箭头,选择 选择磁盘,勾选那块磁盘后开始扫描。
相关文章
开发者磁盘清理发布于 2026/10/29
npm、pnpm、Yarn 缓存怎么清理,不影响项目
分清全局缓存和项目里的 node_modules,用官方命令清理 npm、pnpm、Yarn 缓存,并避开几个容易踩的坑。
开发者磁盘清理发布于 2026/10/29
Xcode 占用几十 GB:DerivedData、模拟器、设备支持文件怎么清
看清 Xcode 的空间花在哪里,DerivedData、模拟器、运行时和设备支持文件哪些能删、怎么删,哪些必须保留。
开发者磁盘清理发布于 2026/10/29
Docker Desktop 在 Mac 上占用太大,怎么回收空间
弄清 Docker Desktop 的虚拟磁盘里装了什么,用官方命令清理构建缓存、镜像和容器,同时保住数据卷里的数据。