#cargo-subcommand #tree #visualize #graph #flags #cmake #openssl

app cargo-tree

一个Cargo子命令,用于以树状格式可视化crate的依赖关系图

38个版本 (破坏性更新)

0.29.0 2020年1月30日
0.28.0 2019年12月24日
0.27.0 2019年9月28日
0.26.0 2019年4月12日
0.3.1 2015年12月31日

#644 in Cargo插件

Download history 318/week @ 2024-03-14 421/week @ 2024-03-21 403/week @ 2024-03-28 247/week @ 2024-04-04 306/week @ 2024-04-11 319/week @ 2024-04-18 354/week @ 2024-04-25 349/week @ 2024-05-02 281/week @ 2024-05-09 299/week @ 2024-05-16 250/week @ 2024-05-23 292/week @ 2024-05-30 215/week @ 2024-06-06 251/week @ 2024-06-13 309/week @ 2024-06-20 198/week @ 2024-06-27

每月 1,024 次下载

MIT/Apache

27KB
641

cargo-tree

CircleCI Latest Version

cargo tree 是一个Cargo子命令,用于以树状格式可视化crate的依赖关系图。

要求:cmakeopenssl

  • macOS(通过 homebrew):brew install cmake openssl
  • Debian/Ubuntu:apt install cmake libssl-dev pkg-config

使用Cargo安装

$ cargo install cargo-tree

在其默认模式下,cargo tree 将打印本地crate的"正常"依赖关系

$ cargo tree
postgres v0.10.2 (file:///Volumes/git/rust/rust-postgres)
├── bufstream v0.1.1
├── byteorder v0.4.2
├── hex v0.1.0
├── log v0.3.4
   └── libc v0.2.4
├── net2 v0.2.20
   ├── cfg-if v0.1.0
   ├── kernel32-sys v0.2.1
   │   └── winapi v0.2.5
   ├── libc v0.2.4 (*)
   ├── winapi v0.2.5 (*)
   └── ws2_32-sys v0.2.1
       └── winapi v0.2.5 (*)
└── phf v0.7.9
    └── phf_shared v0.7.9

crate的依赖关系只会在第一次显示时显示 - 进一步的副本将在其输出后附加一个 (*) 以指示输出已被截断。

与其他 cargo 子命令一样,可以通过 --features 标志启用功能

$ cargo tree --features serde_json
postgres v0.10.2 (file:///Volumes/git/rust/rust-postgres)
├── bufstream v0.1.1
├── byteorder v0.4.2
├── hex v0.1.0
├── log v0.3.4
   └── libc v0.2.4
├── net2 v0.2.20
   ├── cfg-if v0.1.0
   ├── kernel32-sys v0.2.1
   │   └── winapi v0.2.5
   ├── libc v0.2.4 (*)
   ├── winapi v0.2.5 (*)
   └── ws2_32-sys v0.2.1
       └── winapi v0.2.5 (*)
├── phf v0.7.9
   └── phf_shared v0.7.9
└── serde_json v0.6.0
    ├── num v0.1.29
       ├── rand v0.3.12
       │   ├── advapi32-sys v0.1.2
       │   │   └── winapi v0.2.5 (*)
       │   ├── libc v0.2.4 (*)
       │   └── winapi v0.2.5 (*)
       └── rustc-serialize v0.3.16
    └── serde v0.6.7
        └── num v0.1.29 (*)

cargo tree 还可以以"反向"模式运行,其中遍历依赖关系图是反向的。这在尝试确定某个crate的来源时最为有用。使用 --package-p 标志选择作为树根的crate,使用 --invert-i 标志反转依赖关系图遍历

$ cargo tree --features serde_json -p libc -i
libc v0.2.4
├── log v0.3.4
   └── postgres v0.10.2 (file:///Volumes/git/rust/rust-postgres)
├── net2 v0.2.20
   └── postgres v0.10.2 (file:///Volumes/git/rust/rust-postgres) (*)
└── rand v0.3.12
    └── num v0.1.29
        ├── serde v0.6.7
           └── serde_json v0.6.0
               └── postgres v0.10.2 (file:///Volumes/git/rust/rust-postgres) (*)
        └── serde_json v0.6.0 (*)

还有更多选项 - 有关详细信息,请参阅 cargo tree --help 的输出。

依赖关系

~4.5MB
~69K SLoC