Show HN: Cargo-rail: graph-aware monorepo tooling for Rust; 11 deps
3 months ago
- #rust
- #workspace-management
- #cargo
- cargo-rail 是一个用于管理 Rust 工作区的工具,具有依赖版本统一、无用特性修剪和基于图形变更检测等功能。
- 它用一个统一解决方案替代了 cargo-hakari、cargo-udeps 和 cargo-msrv 等多个工具。
- 主要功能包括:
- - 统一工作区内依赖版本
- - 修剪无用特性并检测未使用的依赖
- - 根据依赖关系图计算最低支持 Rust 版本(MSRV)
- - 基于图形变更检测,在 CI 中仅测试受影响的 crate
- - 提取带有完整 git 历史的 crate 并支持双向同步
- - 按依赖顺序发布并自动生成变更日志
- 该工具与 GitHub Actions 等 CI 系统集成,通过仅测试受影响的 crate 来减少 CI 时间。
- 通过 .config/rail.toml 文件进行配置管理,该文件可生成并自定义。
- cargo-rail 设计用于兼容现有 Cargo 工作流,支持工作区继承和私有注册表等特性。
- 其目标是在不脱离 Cargo 生态的前提下,为 Rust 工作区提供类似 Bazel/Buck2 构建系统的优势。
- 该工具已在 tikv、meilisearch 和 tokio 等大型生产工作区经过测试,显著减少了统一依赖项和无用特性的数量。
- 解决了诸如未声明特性等常见问题,这些问题在单独测试或发布 crate 时可能导致隐晦的编译错误。