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

1 回复

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: 预览模式,不实际删除

注意事项

  1. 清理操作不可逆,建议首次使用时先使用--dry-run预览
  2. 清理构建缓存可能会增加下次构建的时间
  3. 定期清理可以显著节省磁盘空间,建议结合项目需求设置合适的清理频率

使用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
回到顶部