19 个版本 (5 个稳定版)
1.2.1 | 2023年7月1日 |
---|---|
1.1.0 | 2022年3月31日 |
0.9.1 | 2022年3月28日 |
#567 in 开发工具
每月下载量 55
75KB
1.5K SLoC
makeclean
从代码项目中删除生成和下载的文件以释放空间。
功能
- 列出、清理并存档根据您多久没有触摸它们的项目。
- 尊重
.gitignore
文件,即使不在 Git 仓库中。构建工具通常在初始化新项目时创建.gitignore
文件,因此确保即使在您尚未初始化 Git 仓库的情况下也不会遍历依赖项。 - 支持
.ignore
文件,与.gitignore
文件具有相同的语义,并由 ripgrep 和 The Silver Searcher 等搜索工具支持。 - 忽略隐藏目录。
目前支持以下构建工具
- Cargo
- Elm
- Flutter
- Gradle (假设
$buildDir
设置为默认值$projectDir/build
! 查看gradle.rs
) - Mix
- NPM
目录
安装
使用 Cargo 安装
cargo install makeclean
当前版本: 1.2.1
用法
运行 makeclean --help
以查看所有可用选项。
列出项目
使用 --list
/-l
列出给定路径下所有“过时”的项目,即最近未更改的项目。
makeclean --list ~/projects
默认情况下,如果一个项目至少一个月没有变化,则被视为过时。您可以通过使用 --min-stale
/ -m
来更改此设置;例如,要考虑在过去两周内未修改的所有项目
makeclean --list --min-stale=2w ~/projects
将 --min-stale
设置为零可禁用检查
makeclean --list --min-stale=0 ~/projects
您还可以使用 --type
/ -t
通过构建工具进行过滤
makeclean --list --type npm ~/projects
清理项目
默认情况下,makeclean
会查找过去一个月未接触过的任何项目,并建议清理它们
makeclean ~/projects
使用 --dry-run
/ -n
来查看会发生什么,但实际上不会删除任何内容
makeclean --dry-run ~/projects
如果在脚本中运行 makeclean
并且不想出现提示,可以传递 --yes
以自动进行
makeclean --yes ~/projects
您也可以一次性指定多个目录。例如,要定期清理一些临时目录,可以将类似以下内容添加到 crontab 或启动脚本中
makeclean --min-stale=1w --yes \
~/code/rust-playground \
~/code/elm-playground \
~/code/flutter-playground
清理 + 存档项目
如果您还希望在清理项目后存档项目,请传递 --archive
。例如,以下命令会在清理后用 ~/projects/foo.tar.xz
替换 ~/projects/foo
的内容
makeclean --archive ~/projects/foo
请注意,虽然
--archive
也考虑了已清理的项目,但它仍然尊重--min-stale
。如果 makeclean 没有找到您的项目,但您认为应该找到,请尝试使用环境变量RUST_LOG
设置为trace
再次尝试,例如,RUST_LOG=trace makeclean --archive ~/projects/foo
。您应该会看到有关项目为何未被考虑的提示。如果日志没有告诉您发生了什么,请考虑 创建一个 GitHub 问题。
要恢复项目,请使用 tar
(可能已经安装到您的系统上)
cd ~/projects/foo
tar -xaf foo.tar.xz && rm foo.tar.xz
黑客技巧
欢迎提交 PR!查看 crates.io 上的文档 以开始。如果您有任何问题,请随时创建 GitHub 问题。
添加新构建工具的清单
- 将适用的项目类型添加到
src/build_tools.rs
中的BuildToolKind
枚举。 - 将新模块添加到
src/build_tools.rs
,在src/build_tools/
以下创建一个文件。 - 在
src/build_tool_manager.rs
中将register
调用添加到BuildToolManager::default
。 - 将模块和初始化函数添加到
tests/util/
和tests/tests/build_tools.rs
中的tools
数组。
许可证
MIT。任何贡献都被假定为 MIT 许可。
依赖关系
~24–37MB
~679K SLoC