41 个版本
0.17.1 | 2024 年 8 月 2 日 |
---|---|
0.17.0 | 2024 年 6 月 26 日 |
0.16.10 | 2024 年 4 月 12 日 |
0.16.7 | 2024 年 3 月 20 日 |
0.2.0 | 2020 年 2 月 5 日 |
10 在 可视化
每月 62,387 次下载
用于 9 个 crate(6 个直接使用)
160KB
3K SLoC
使用方法
use krates::{Builder, Cmd, Krates, cm, petgraph};
fn main() -> Result<(), krates::Error> {
let mut cmd = Cmd::new();
cmd.manifest_path("path/to/a/Cargo.toml");
// Enable all features, works for either an entire workspace or a single crate
cmd.all_features();
let mut builder = Builder::new();
// Let's filter out any crates that aren't used by x86_64 windows
builder.include_targets(std::iter::once(("x86_64-pc-windows-msvc", vec![])));
let krates: Krates = builder.build(cmd, |pkg: cm::Package| {
println!("Crate {} was filtered out", pkg.id);
})?;
// Print a dot graph of the entire crate graph
println!("{:?}", petgraph::dot::Dot::new(krates.graph()));
Ok(())
}
krates
也可以在将 cargo
作为依赖项使用时使用。它不依赖于 cargo
本身,因为 cargo 发展迅速,我们不希望人为地限制您使用的版本,但至少在当前的稳定 cargo
crate 中,以下代码运行良好。
fn get_metadata(
no_default_features: bool,
all_features: bool,
features: Vec<String>,
manifest_path: PathBuf,
) -> Result<krates::cm::Metadata, anyhow::Error> {
let config = cargo::util::Config::default()?;
let ws = cargo::core::Workspace::new(&manifest_path, &config)?;
let options = cargo::ops::OutputMetadataOptions {
features,
no_default_features,
all_features,
no_deps: false,
version: 1,
filter_platforms: vec![],
};
let md = cargo::ops::output_metadata(&ws, &options)?;
let md_value = serde_json::to_value(md)?;
Ok(serde_json::from_value(md_value)?)
}
贡献
我们欢迎社区对该项目的贡献。
请参阅我们的 贡献指南 了解如何开始。
许可证
根据以下任一许可证授权:
- Apache 许可证 2.0 版 (LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
供您选择。
贡献
除非您明确声明,否则您有意提交给作品并包含在内的任何贡献,根据 Apache-2.0 许可证的定义,应如上所述双重许可,不附加任何额外条款或条件。
依赖项
~3–4MB
~74K SLoC