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 日 |
#83 在 Cargo 插件 中
581 次每月下载
用于 substrate-deps
51KB
952 行
cargo-deps
注意: 此软件包目前没有积极维护。请考虑使用在 替代方案 中提到的软件包。
关于
Cargo 子命令,用于构建 Rust 项目的依赖关系图。
本项目是针对未维护且有缺陷的 cargo-graph 的改进。
示例
安装
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 B
和C
,并且crate B
直接依赖于crate C
,则此选项将省略从A
到C
的边。为了说明,比较Tokei的默认依赖项图(由cargo deps
生成)和移除了传递依赖项的图(由cargo deps --no-transitive-deps
生成)。
子图
可以使用--subgraph
命令将一组依赖项进行视觉分组。
示例
这是使用以下命令生成的
cargo deps -I --all-deps --no-regular-deps | dot -Tpng > tokei.png
这是使用以下命令生成的,仅显示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
的子命令包含在内。
依赖项
变更日志
依赖项
~2.7–3.5MB
~63K SLoC