#graph #cargo #graphviz #dependencies #cargo-subcommand #visualization

bin+lib cargo-deps

Cargo 子命令,用于构建 Rust 项目的依赖关系图

13 个稳定版本

1.5.1 2023 年 8 月 27 日
1.5.0 2022 年 9 月 19 日
1.4.1 2020 年 2 月 22 日
1.3.0 2019 年 12 月 2 日
1.0.3 2019 年 2 月 23 日

#83Cargo 插件

Download history 159/week @ 2024-04-30 209/week @ 2024-05-07 155/week @ 2024-05-14 120/week @ 2024-05-21 105/week @ 2024-05-28 121/week @ 2024-06-04 105/week @ 2024-06-11 188/week @ 2024-06-18 150/week @ 2024-06-25 121/week @ 2024-07-02 124/week @ 2024-07-09 189/week @ 2024-07-16 113/week @ 2024-07-23 119/week @ 2024-07-30 138/week @ 2024-08-06 168/week @ 2024-08-13

581 次每月下载
用于 substrate-deps

BSD-3-Clause

51KB
952

cargo-deps

Build Status crates.io Documentation unsafe forbidden Downloads Issues LoC Coverage Status License: BSD-3-Clause

注意: 此软件包目前没有积极维护。请考虑使用在 替代方案 中提到的软件包。

目录**目录**

关于

Cargo 子命令,用于构建 Rust 项目的依赖关系图。

本项目是针对未维护且有缺陷的 cargo-graph 的改进。

示例

safe_app dependencies

安装

cargo-deps 可以通过以下命令安装:cargo install

cargo install cargo-deps

说明

首先,请确保您已安装 graphviz

然后,只需在您想进行图表绘制的 Rust 项目目录中运行

cargo deps | dot -Tpng > graph.png

这就完成了!graph.png 将包含图(当然,您也可以更改其名称!)

请注意,如果输出文件已存在,则 > 可能无法正常工作,此时您可以尝试 >|

依赖类型

默认行为是排除可选、开发和构建依赖项。要查看所有依赖项,请传递 --all-deps

cargo deps --all-deps | dot -Tpng > graph.png

依赖项的颜色取决于其类型

  • 黑色:常规依赖项
  • 紫色:构建依赖项
  • 蓝色:开发依赖项
  • 红色:可选依赖项

依赖项可能属于多种类型。在这种情况下,它将按照以下优先级着色

Regular -> Build -> Dev -> Optional

例如,如果一个依赖项既是构建依赖项又是开发依赖项,则它将被标记为构建依赖项。但是,如果你使用--dev-deps选项而不是--all-deps选项,则依赖项将被标记为开发依赖项(因为不会显示构建依赖项图)。

过滤

一些Rust项目具有非常大的依赖树,可能你只想显示某些依赖项,比如同一工作空间中的依赖项。幸运的是,cargo-deps提供了--filter选项来处理这种情况。不幸的是,你必须明确列出所有想要保留的依赖项,而且cargo-deps目前还不能检测工作空间。

排除

排除某些crates从最终图中可能很有用。可以使用带有所需crates作为参数的--exclude标志来实现。

深度

为了限制图的尺寸并使其更简洁,可以使用--depth选项将输出限制在特定深度的依赖项。

过滤传递边

对于大型依赖项图,可以使用--no-transitive-deps选项来过滤掉被传递依赖项“覆盖”的边,这可以通过省略一些冗余边来使视觉解析稍微容易一些。例如,如果crate A直接依赖于crate BC,并且crate B直接依赖于crate C,则此选项将省略从AC的边。为了说明,比较Tokei的默认依赖项图(由cargo deps生成)和移除了传递依赖项的图(由cargo deps --no-transitive-deps生成)。

子图

可以使用--subgraph命令将一组依赖项进行视觉分组。

示例

Tokei --

这是使用以下命令生成的

cargo deps -I --all-deps --no-regular-deps | dot -Tpng > tokei.png

SAFE客户端库 --

这是使用以下命令生成的,仅显示MaidSafe依赖项

cargo deps --all-deps --include-orphans --subgraph safe_app safe_app_jni safe_authenticator safe_authenticator_jni safe_core --subgraph-name "SAFE Client Libs" --filter accumulator config_file_handler crust ffi_utils fake_clock lru_time_cache maidsafe_utilities parsec resource_proof routing rust_sodium safe_app safe_app_jni safe_authenticator safe_authenticator_jni safe_bindgen safe_core safe_crypto safe_vault secure_serialisation self_encryption system_uri tokio_utp --manifest-path safe_app/Cargo.toml | dot -Tpng -Nfontname=Iosevka -Gfontname=Iosevka > safe-client-libs.png

更多信息

运行cargo deps -h查看所有可用选项。

替代方案

虽然cargo-deps应该适用于大多数用例,但它具有过时的架构,且创建者没有进行积极开发。可以考虑的替代方案包括

  • cargo-depgraph:比cargo-deps具有更多功能。
  • cargo-tree:以文本格式显示依赖项。截至Rust 1.44,作为cargo的子命令包含在内。

依赖项

cargo-deps dependencies

变更日志

变更日志

依赖项

~2.7–3.5MB
~63K SLoC