#cargo-build #cargo #target #cargo-check #filter #wasm #cli

app cargo-ft

用于指定 crate 支持的目标的 cargo 扩展

4 个版本

0.1.3 2024年2月6日
0.1.2 2024年1月2日
0.1.1 2023年12月8日
0.1.0 2023年12月6日

#76Cargo 插件

Download history 6/week @ 2024-03-13 10/week @ 2024-03-27 23/week @ 2024-04-03 13/week @ 2024-04-10 15/week @ 2024-05-08 80/week @ 2024-05-15 167/week @ 2024-05-22 187/week @ 2024-05-29 263/week @ 2024-06-05 187/week @ 2024-06-12 208/week @ 2024-06-19 199/week @ 2024-06-26

每月 899 次下载

Apache-2.0

40KB
841 代码行

cargo-ft

cargo-ft (cargo filter target) 是一个用于指定 crate 支持的目标的 cargo 扩展。

描述

当你的工作区变大时,你可能会有针对不同平台的目标 crate。例如,你可以有针对桌面平台(Linux、Windows 和 MacOS)的 crate,针对 Android 的 crate,以及针对 WASM 的 crate。当你想在 CI 中运行 cargo check/clippy 时,你必须手动包含/排除一些 crate 来检查 Linux、Android 和 WASM。当你在工作区中添加或删除 crate 时,还需要更新 crate 的包含/排除列表。

你可以通过直接在 Cargo.toml 中声明支持的 targets 来声明它们,以便在构建时跳过它们,或者当显式构建 crate 时提前报错。

安装

使用 cargo 安装 cargo-ft。

cargo install --locked cargo-ft

用法

默认情况下,如果元数据缺失或为空,工具将假设 crate 支持所有目标。

如果你要控制支持的目标,请首先在 crate 的 Cargo.toml 中声明支持的目标,如下所示:

[package.metadata.ft]
targets = ["wasm32-unknown-unknown"]

然后,使用 ft 前缀你的构建、检查、clippy 或运行命令,或者在可以指定 target 的任何命令中,以过滤不支持的目标。

一些示例

# Run cargo build on crates supporting the host target
cargo ft build # Instead of cargo build

# Run cargo clippy on crates supporting wasm32
cargo ft clippy --workspace --all-targets --all-features --target wasm32-unknown-unknown -- -D warnings # Instead of cargo clippy ...

此工具的创建是为了响应我们在处理具有大量二进制文件的多目标工作空间时遇到的需求。以下问题表明我们并不孤单,尽管需求可能并不完全相同。

所有这些问题都提到了需要精简Cargo.lock,只保留与目标相关的依赖。这个功能在这个扩展中并没有实现,因为要么你只使用cargo-ft来处理所有事情,要么每次改变Cargo.lock时,cargocargo-ft都会产生冲突。这个功能可能只能在cargo中直接实现。

贡献

欢迎提交拉取请求。对于重大更改,请首先提交一个问题以讨论您想要更改的内容。

请确保根据需要更新测试。

请确保使用常规提交

许可协议

此项目采用Apache-2.0许可协议。

有关详细信息,请参阅LICENSENOTICE

依赖

~4–13MB
~147K SLoC