8 个版本
0.6.2 | 2023年12月25日 |
---|---|
0.6.1 | 2023年11月5日 |
0.6.0 | 2023年5月20日 |
0.5.0 | 2022年11月19日 |
0.4.0 | 2022年2月27日 |
#65 在 Cargo 插件 中
124 每月下载量
1.5MB
455 行
cargo-clean-all
为什么存在
当我意识到我的 rust 目标目录总共占用了超过 50gb 时,我感到有些震惊,因此我开发了这款工具来帮助我清理所有项目目标目录。已经存在 cargo-clean-recursive,但它不幸不支持交互式选择或保留最近文件,以防止拖慢我当前正在工作的项目。
它做什么
这是一个自定义的 cargo
子命令,它搜索给定父目录下的所有 rust cargo 项目并删除构建工件(即目标目录)。在清理之前,它会显示可以释放的磁盘空间量。可以使用交互式选择或 CLI 过滤器排除特定项目。CLI 过滤器可以排除在最近 X 天内编译的项目、目标目录小于 X 的项目或被特别忽略的项目。
实际的清理过程只是简单地删除检测到的项目的目标目录,这似乎是 cargo clean
默认执行的
安装
使用 cargo 安装
cargo install cargo-clean-all
用法
清理当前工作目录中的所有项目,同时可以交互式地取消选择项目
cargo clean-all -i
在没有交互模式的情况下清理家目录(及其子目录)中过去 7 天内未编译的所有项目。这仍然会显示项目并要求确认,但不会显示手动选择对话框
cargo clean-all --keep-days 7 ~
在交互模式下清理家目录(及其子目录)中占用超过 10MB 的所有项目。
cargo clean-all -i --keep-size 10MB ~
清理家目录(及其子目录)中的所有项目,排除下载和文档目录。由于使用交互模式,被忽略目录中的项目仍可手动添加到清理运行中。
cargo clean-all -i --ignore ~/Downloads --ignore ~/Documents ~
替代方案
cargo-clean-recursive
功能 | cargo-clean-all |
cargo-clean-recursive |
---|---|---|
清理当前目录下的项目 | 是 | 是 |
在任何目录下清理项目 | 是 | 否 |
显示释放的/可释放的磁盘空间 | 是 | 否 |
保持目标目录在大小阈值以下 | 是 | 否 |
保持目标目录的最后修改阈值 | 是 | 否 |
在清理前询问 | 是 | 否 |
交互式选择项目 | 是 | 否 |
仅清理 release ,debug 或 docs |
否(尚未实现) | 是 |
底层的真实 cargo clean 命令 |
否 | 是 |
在额外目录中保留可执行文件 | 是 | 否 |
请注意,cargo-clean-recursive
使用真实的 cargo clean
命令而不是简单地删除目标目录。这使得清理工作与已安装的 cargo 版本所期望的完全一致,这在某些情况下可能是希望的。
手册
Recursively clean all cargo projects in a given directory that match the specified criteria
Usage: cargo clean-all [OPTIONS] [DIR]
Arguments:
[DIR] The directory in which the projects will be searched [default: .]
Options:
-y, --yes Don't ask for confirmation; Just clean all detected projects that are not excluded by other constraints
-s, --keep-size <SIZE> Ignore projects with a target dir size smaller than the specified value. The size can be specified using binary prefixes like "10MB" for 10_000_000 bytes, or "1KiB" for 1_024 bytes [default: 0]
-d, --keep-days <DAYS> Ignore projects that have been compiled in the last [DAYS] days. The last compilation time is infered by the last modified time of the contents of target directory [default: 0]
--dry-run Just collect the cleanable projects and list the freeable space, but don't delete anything
-t, --threads <THREADS> The number of threads to use for directory scanning. 0 automatically selects the number of threads [default: 0]
-v, --verbose Show access errors that occur while scanning. By default those errors are hidden
-i, --interactive Use the interactive project selection. This will show a selection of all cleanable projects with the possibility to manually select or deselect
--ignore <IGNORE> Directories that should be ignored by default, including subdirectories. This will still detect the projects in those directories, but mark them to not be cleaned. To actually skip scanning directories, use --skip instead. The directories can be specified as absolute paths or relative to the workdir
-e, --keep-executable Keeping compiled executables in release, debug and cross-compilation directories. Moves the executable to a new folder outside of target
--skip <SKIP> Directories that should be fully skipped during scanning, including subdirectories. This will speed up the scanning time by not doing any reads for the specified directories. The directories can be specified as absolute paths or relative to the workdir
-h, --help Print help information
-V, --version Print version information
依赖项
~9–22MB
~258K SLoC