10-cargo vendor
3 分钟阅读
译文 · 基于 The Cargo Book
cargo-vendor(1)
原文链接: https://doc.rust-lang.org/cargo/commands/cargo-vendor.html
名称
cargo-vendor — 将所有依赖供应商化到本地
大纲
cargo vendor [options] [path]
描述
此 cargo 子命令会将项目的所有 crates.io 与 git 依赖供应商化到 <path> 指定的目录。
命令完成后,<path> 指定的 vendor 目录将包含依赖中指定的所有远程源。
可用 -s 选项指定默认清单之外的其他清单。
cargo vendor 完成供应商化过程后,使用供应商化源所需的配置会打印到标准输出。
你需要将其添加或重定向到 Cargo 配置文件,
对于当前包通常是本地的 .cargo/config.toml。
Cargo 将供应商化源视为只读,就像对待注册表与 git 源一样。
若你打算修改来自远程源的 crate,
请使用 [patch] 或指向该 crate 本地副本的 path 依赖。
Cargo 随后会在增量重建时正确处理该 crate,
因为它知道它不再是只读依赖。
选项
供应商化选项
-smanifest--syncmanifest指定额外的
Cargo.toml清单,其工作空间也应被供应商化并同步到输出。可指定多次。--no-delete供应商化时不删除 “vendor” 目录,而是保留 vendor 目录的所有现有内容
--respect-source-config默认情况下忽略
.cargo/config.toml中的[source]配置;指定此选项后改为读取并使用它,例如从 crates.io 下载 crate 时--versioned-dirs通常仅在需要区分同一包的多个版本时才添加版本号。此选项使 “vendor” 目录中的所有目录都带版本, 便于随时间跟踪供应商化包的历史,并在仅有一部分包发生变化时有助于重新供应商化的性能。
清单选项
--manifest-pathpathCargo.toml文件的路径。默认情况下,Cargo 在当前目录或任意父目录中搜索Cargo.toml文件。--locked断言使用的依赖与版本与最初生成现有
Cargo.lock文件时完全相同。出现以下任一情况时 Cargo 将以错误退出:- 锁文件缺失。
- Cargo 因不同的依赖解析而试图更改锁文件。
可用于需要确定性构建的环境,例如 CI 流水线。
--offline阻止 Cargo 以任何理由访问网络。若未指定此标志,当 Cargo 需要访问网络而网络不可用时会以错误停止。指定此标志后,Cargo 会在可能时尝试在无网络情况下继续。
请注意,这可能导致与在线模式不同的依赖解析。Cargo 会将自身限制为本地已下载的 crate,即便本地索引副本表明可能有更新版本。 可先使用 cargo-fetch(1) 命令下载依赖再离线。
也可通过
net.offline配置值 指定。--frozen等价于同时指定
--locked与--offline。
显示选项
-v--verbose使用详细输出。可指定两次以获得“非常详细”的输出,其中包含依赖警告与构建脚本输出等额外信息。 也可通过
term.verbose配置值 指定。-q--quiet不打印 cargo 日志消息。 也可通过
term.quiet配置值 指定。--colorwhen控制何时使用彩色输出。有效值:
auto(默认):自动检测终端是否支持颜色。always:始终显示颜色。never:从不显示颜色。
也可通过
term.color配置值 指定。
通用选项
+toolchain若 Cargo 通过 rustup 安装,且传给
cargo的第一个参数以+开头,则会被解释为 rustup 工具链名称(例如+stable或+nightly)。 关于工具链覆盖如何工作,见 rustup 文档。--configKEY=VALUE or PATH覆盖 Cargo 配置值。参数应为 TOML 语法的
KEY=VALUE, 或指向额外配置文件的路径。此标志可指定多次。 更多信息见 命令行覆盖一节。-CPATH在执行任何指定操作之前更改当前工作目录。这会影响 Cargo 默认查找项目清单(
Cargo.toml)的位置,以及 用于发现.cargo/config.toml的目录搜索等。此选项必须 出现在命令名称之前,例如cargo -C path/to/my-project build。此选项仅在 nightly 通道 上可用,且 需要
-Z unstable-options标志才能启用(见 #10098)。-h--help打印帮助信息。
-ZflagCargo 的不稳定(仅 nightly)标志。运行
cargo -Z help查看详情。
环境
关于 Cargo 读取的环境变量详情,见参考文档。
退出状态
0:Cargo 成功。101:Cargo 未能完成。
示例
将所有依赖供应商化到本地 “vendor” 文件夹
cargo vendor将所有依赖供应商化到本地 “third-party/vendor” 文件夹
cargo vendor third-party/vendor将当前工作空间以及另一个工作空间供应商化到 “vendor”
cargo vendor -s ../path/to/Cargo.toml供应商化并将必要的 vendor 配置重定向到配置文件。
cargo vendor > path/to/my/cargo/config.toml