我用一个 CLI 命令在 10 秒内释放了 12GB 磁盘空间
Source: Dev.to
请提供您想要翻译的具体文本内容(文章正文),我将把它翻译成简体中文并保留原有的 Markdown 格式。谢谢!
磁盘几乎已满? 你的开发工具可能是罪魁祸首
你知道那条在你正忙着处理重要事务时弹出的 “disk almost full” 通知吗?没错,就是它。
我过去常常花 20 分钟去追查到底是什么在占用我的磁盘空间。结果发现答案几乎总是 相同 的:我自己的开发工具。
你的开发机器正在悄悄占用数 GB 的垃圾
一个在站会中没人提及的肮脏秘密:你曾经克隆、构建并忘记的每一个项目仍然停留在磁盘上,悄悄消耗空间。
- 那个一月的副项目?它的
node_modules仍然在那里。 - 那个周末尝试的 Rust 实验?
target/文件夹已经有 800 MB。 - 那三个 Docker 教程?大量悬挂的镜像。
更糟的是 每个工具都有自己的清理命令:
rm -rf node_modules # per project, manually
docker system prune # Docker
brew cleanup --prune=all # Homebrew
pip cache purge # Python
cargo clean # Rust, per project
rm -rf ~/Library/Developer/Xcode/DerivedData # Xcode
npm cache clean --force # npm
七条不同的命令。有的需要针对每个项目执行,有的你甚至会忘记它们的存在。它们都没有给出一个清晰的视图,告诉你到底浪费了多少空间。
我受够了,于是我做了点东西。
认识 devclean – 一个可以扫描并清理一切的 CLI
devclean 是一个单一命令,能够查找整个开发环境中所有可回收的空间,并让你一次性清理它们。
安装
npm install -g devclean-cli
扫描
devclean scan
无需配置、无需设置、无需标志。它会遍历你的主目录并找到所有内容。
实际扫描的样子
$ devclean scan
devclean — scanning /Users/you
Scanning node_modules... found 23 (4.7 GB)
1.2 GB 142d ago ~/old-client-project/node_modules
891.0 MB 98d ago ~/freelance-2024/node_modules
620.3 MB 67d ago ~/hackathon-app/node_modules
... 20 more
Scanning Cargo targets... found 2 (1.2 GB)
803.4 MB ~/rust-playground/target
421.1 MB ~/cli-tool-experiment/target
Scanning package manager caches... found 2 (890.0 MB)
540.2 MB npm cache — ~/.npm
349.8 MB yarn cache — ~/Library/Caches/Yarn
Scanning Docker... found 3 item(s)
5 dangling image(s)
2 stopped container(s)
Docker system (use docker system prune)
Scanning Homebrew cache... 2.1 GB
2.1 GB ~/Library/Caches/Homebrew
Scanning Xcode DerivedData... 3.4 GB
3.4 GB ~/Library/Developer/Xcode/DerivedData
Total reclaimable: 12.3 GB
Run devclean clean to free this space
12.3 GB——就这么静静地挂在那里,什么也不做。二十三个 node_modules 文件夹来自几个月前未触碰的项目,Cargo 的构建产物来自你“刚尝试”的语言,Homebrew 的下载来自六个月前安装的包。
删除前预览
还没准备好动手吗?使用 --dry-run:
$ devclean clean --dry-run
devclean — dry run
[dry-run] Would delete 1.2 GB ~/old-client-project/node_modules
[dry-run] Would delete 891.0 MB ~/freelance-2024/node_modules
[dry-run] Would delete 620.3 MB ~/hackathon-app/node_modules
...
[dry-run] Would delete 803.4 MB ~/rust-playground/target
[dry-run] Would clean npm cache
[dry-run] Would run docker system prune
[dry-run] Would clean Homebrew cache
[dry-run] Would delete 3.4 GB ~/Library/Developer/Xcode/DerivedData
Dry run complete. No files were deleted.
没有任何文件被触碰。您可以看到将会发生的情况。
只清理你想要的内容
也许你现在只关心 node_modules。没问题:
devclean clean --node-modules
或者只清理 Docker:
devclean clean --docker
或者指定某个目录:
devclean clean -p ~/projects/2024
每个目标都有自己的标志,让你保持掌控。
使用 --older-than 保护活跃项目
这是我最喜欢的参数。如果你担心清理正在积极开发的项目的 node_modules,可以添加一个年龄过滤器:
devclean clean --older-than 30
只有那些在 30 天以上未被修改的项目会被删除。你当前的项目保持不变。那三个月前的项目,你说“一定会回来的”?已经消失。你随时可以在 15 秒内再次运行 npm install。
我把它放在每周的 cron 任务中运行:
devclean clean --older-than 60
设置好后就忘了它。我的磁盘再也不会满了。
它清理的内容
| 目标 | 查找内容 | 清理方式 |
|---|---|---|
node_modules | 您的所有项目中的 node_modules/ 文件夹 | rm -rf |
| Docker | 悬挂的镜像、已停止的容器、构建缓存 | docker system prune |
| Homebrew | 已下载的包缓存 | brew cleanup --prune=all |
| pip | Python 包下载缓存 | pip cache purge |
| Cargo | Rust 的 target/ 构建目录 | rm -rf |
| Xcode | DerivedData 构建缓存 | rm -rf |
| npm / Yarn | 包管理器下载缓存 | npm cache clean / yarn cache clean |
重要:
devclean scan始终是 只读 的。它永不删除任何内容。您必须显式运行devclean clean才会删除文件,并且它只会触及已知的缓存和构建目录——绝不会影响您的源代码。
安装与使用回顾
npm install -g devclean-cli
devclean scan # 查看是什么占用了磁盘
devclean clean --dry-run # 预览清理操作
devclean clean # 释放空间
在 macOS 和 Linux 上运行。需要 Node.js 16+。
为什么我写了它
我已经做开发多年了,却仍然每隔几个月就会发现磁盘空间不足。解决办法总是一样的:删除一堆 node_modules、清理 Docker、清除一些缓存。每次都要查找并输入这些命令,耗时 10‑20 分钟。
devclean 把这些操作合并成一个只需 10 秒的命令。
如果你觉得这很有用,试试看吧。如果你喜欢它,在 GitHub 上点个星星会有很大帮助。
链接
devclean scan 在你的机器上找到了多少空间?把数字留在评论区。我敢打赌,它比你想象的要多。