Hasty Briefsbeta

双语

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 时可能导致隐晦的编译错误。