Rust包管理工具cargo-sweep的使用:高效清理Cargo缓存和未使用依赖项
Cargo-sweep
一个用于清理由Cargo生成的未使用构建文件的cargo子命令。
动机
理想情况下,您希望:
- 缓存最近的构建产物以实现快速构建时间
- 限制目标目录大小,以便CI缓存(在Travis等上)快速
- 一种简单的方式来同时维护一个或多个项目
Cargo-sweep旨在解决所有这些问题,而简单的cargo clean不足以解决这些问题。
快速开始
要安装运行:
cargo install cargo-sweep
要清理本地Cargo项目中超过30天的所有构建文件运行:
cargo sweep --time 30
要清理不是由当前安装的(通过rustup)nightly编译器生成的所有构建文件:
cargo sweep --toolchains nightly
如果您检查了您的库在stable上工作,但主要在nightly上开发,这可能很有用。
要清理不是由任何当前安装的(通过rustup)编译器生成的所有构建文件:
cargo sweep --installed
如果您刚刚使用rustup update
更新了编译器,这可能很有用。
也支持非rustup环境。如果cargo-sweep
无法运行rustup,它会回退到裸rustc
调用(必须安装rustc
并且其路径必须通过PATH环境变量可用)。
要预览清理运行的结果,建议作为第一步,添加--dry-run
标志,例如:
cargo sweep --dry-run --time 30
您还可以指定路径而不是默认为当前目录:
cargo sweep --time 30 <path>
要清理除最新构建之外的所有内容,您需要分几步运行它。
cargo sweep --stamp
<插入任意数量的cargo build、cargo test等...>
cargo sweep --file
第一步生成一个时间戳文件,该文件将用于清理在它和下次使用文件(–file)选项之间未使用的所有内容。
最后,您可以通过添加--recursive
标志递归清理给定路径下的所有Cargo项目,例如:
cargo sweep --recursive --time 30 path/to/project
要获取更多信息,运行:
cargo sweep --help
许可证
Cargo-sweep根据MIT许可证的条款分发。
完整示例代码:
# 安装cargo-sweep
cargo install cargo-sweep
# 清理超过30天的构建文件(预览模式)
cargo sweep --dry-run --time 30
# 实际清理超过30天的构建文件
cargo sweep --time 30
# 清理非当前安装工具链的构建文件
cargo sweep --installed
# 清理特定工具链(如nightly)的构建文件
cargo sweep --toolchains nightly
# 在特定路径下执行清理
cargo sweep --time 30 /path/to/your/project
# 递归清理子目录中的项目
cargo sweep --recursive --time 30 /path/to/projects
# 使用时间戳标记清理(保留最新构建)
cargo sweep --stamp
# ...执行构建或测试操作...
cargo sweep --file
Rust包管理工具cargo-sweep的使用指南
工具介绍
cargo-sweep是一个专为Rust开发者设计的实用工具,用于高效清理Cargo构建缓存和未使用的依赖项。它能够智能识别项目中不再需要的构建产物和依赖文件,帮助开发者释放磁盘空间并保持项目整洁。
安装方法
cargo install cargo-sweep
基本使用方法
1. 清理当前项目的构建缓存
cargo sweep
此命令会清理当前目录下项目的target目录中过期的构建缓存文件。
2. 清理所有项目的构建缓存
cargo sweep --all
清理系统中所有Rust项目的构建缓存,适用于需要全面清理的情况。
3. 清理指定时间之前的构建文件
cargo sweep --time 30
清理30天前的构建文件,保留最近30天内的构建产物。
4. 仅显示将要清理的文件(预览模式)
cargo sweep --dry-run
在不实际删除文件的情况下,显示将要被清理的文件列表。
5. 强制清理(跳过确认提示)
cargo sweep --force
直接执行清理操作,跳过用户确认步骤。
高级用法示例
组合使用多个选项
cargo sweep --all --time 7 --recursive --force
清理所有项目中7天前的构建文件,包括子目录,且不进行确认提示。
在CI/CD流水线中使用
cargo sweep --installed --time 0
在持续集成环境中使用,清理所有已安装crate的即时构建缓存。
常用选项说明
-a, --all
: 清理所有项目的缓存-t, --time <DAYS>
: 指定保留天数阈值-r, --recursive
: 递归清理子目录-f, --force
: 跳过确认提示-d, --dry-run
: 预览模式,不实际删除
注意事项
- 清理操作不可逆,建议首次使用时先使用
--dry-run
预览 - 清理构建缓存可能会增加下次构建的时间
- 定期清理可以显著节省磁盘空间,建议结合项目需求设置合适的清理频率
使用cargo-sweep可以有效管理Rust项目的磁盘空间使用,特别适合长期开发的大型项目或多个Rust项目并存的开发环境。
完整使用示例
# 示例1:首次使用预览模式查看将要清理的文件
cargo sweep --dry-run
# 示例2:清理当前项目30天前的构建文件
cargo sweep --time 30
# 示例3:清理所有项目中14天前的构建文件,包括子目录
cargo sweep --all --time 14 --recursive
# 示例4:在CI/CD环境中清理即时构建缓存
cargo sweep --installed --time 0 --force
# 示例5:全面清理所有项目的构建缓存(跳过确认)
cargo sweep --all --recursive --force
# 示例6:清理特定时间范围内的构建文件(保留最近7天)
cargo sweep --time 7
# 示例7:递归清理当前项目及其子目录的构建缓存
cargo sweep --recursive
# 示例8:组合使用多个选项进行精确清理
cargo sweep --all --time 30 --recursive --dry-run