cargo-vendor(1)
名称
cargo-vendor --- 将所有依赖项下载到本地
用法概要
cargo vendor
[选项] [路径]
功能介绍
该cargo子命令将下载所有crates.io和git源指定的依赖项到指定的目录<path>
中。
待命令运行完毕之时,<path>
指定的目录中将包含所有依赖项的远程源代码内容。
可以使用-s
选项指定额外的Cargo.toml
清单文件。
命令运行完毕时,stdout将输出配置信息,指导如何令分发(vendor)操作真正生效。
一般来说,您需要将输出内容添加到.cargo/config.toml
文件中。
Cargo将经分发的源代码(vendored sources)视为只读的,就像它对registry源代码和git源代码那样。
如果您意图对远程源代码中的crate进行修改,请在Cargo.toml
清单文件中使用[patch]
或指向本地副本的path
依赖项。
Cargo将正确处理该crate的增量构建过程,因为它知道它已经不是只读依赖项了。
选项
分发选项
-s
manifest--sync
manifest- 指定一个额外的
Cargo.toml
清单文件到当前工作空间中,该文件记录的依赖项也会被分发并同步到输出目录。可以多次指定这个选项 --no-delete
- 在分发时,不再删除"vendor"目录,即:保留那个目录中的所有已有内容
--respect-source-config
- 默认情况下被忽略的
.cargo/config.toml
中的[source]
此时不再被忽略。它将被用于诸如下载crates等用途 --versioned-dirs
- 一般来说,版本号仅在去歧义时才会被添加到依赖项的目录名中。使用此选项将导致"vendor"目录的所有依赖项目录名中包含完整的版本号。这将有利于追踪开发时间线上被分发crate的改动。当一部分被分发的crate发生改动时,重分发的效率也会有所提高
清单选项
--manifest-path
pathCargo.toml
文件的路径。默认情况下,Cargo会在当前目录及父目录中搜索该文件--locked
- 确保分发时使用的依赖项及其版本均与
Cargo.lock
文件中记载的一致。当下列情景发生时,Cargo将会报错并退出:Cargo.lock
文件丢失。- 由于依赖项解析结果发生变化,Cargo尝试修改
Cargo.lock
文件。(原文:Cargo attempted to change the lock file due to a different dependency resolution.)
该选项在需要确定性构建的场景中十分有用,例如CI管道(CI pipelines)。
--offline
- 阻止Cargo联网。若无设定此选项,Cargo将在需要联网但网络不可用时报错退出。设定此选项后,Cargo将尝试在无网络的情况下继续运行。
注意:指定该选项之后,解析的依赖项可能与在线模式的不同。Cargo将限制自己仅使用本地已下载的crate,即使在线模式下可能有更新的版本也不会使用。请另行参阅cargo-fetch(1)命令,以在离线前提前下载依赖项。
也可以通过指定
net.offline
配置项(config value)实现同样的效果。 --frozen
- 效果等同于同时设置
--locked
和--offline
。 --lockfile-path
PATH- 修改Cargo.lock文件的路径为PATH,不再使用默认路径(
<workspace_root>/Cargo.lock
)。PATH必须以Cargo.lock
结尾(例如:--lockfile-path /tmp/temporary-lockfile/Cargo.lock
)。注意,若指定了--lockfile-path
选项,则默认路径的Cargo.lock将被忽略,转而:要么用PATH指定的Cargo.lock,要么根据PATH指定的路径生成新的Cargo.lock文件。该选项可在只读的文件中运行,并在指定的PATH中写入Cargo.lock。该选项仅在nightly channel中可用,且需要启用
-Z unstable-options
选项(请参阅 #14421).
显示选项
-v
--verbose
- 输出详细信息。可以指定两次,以输出超详细信息,其中包含依赖项警告和构建脚本(build script)的输出。也可以通过指定
term.verbose
配置选项达成同样效果。 -q
--quiet
- 不输出Cargo日志信息。也可以通过指定
term.quiet
配置选项来达成同样效果。 --color
when- 控制是否输出彩色内容。可用的选项包括:
auto
(默认): 自动检测终端是否支持彩色输出。always
: 总是使用彩色输出。never
: 不使用彩色输出。
也可以通过指定
term.color
配置选项达成同样效果。
通用选项
+
toolchain- 若Cargo是由rustup安装的,且cargo的第一个参数以+开头,Cargo将会把此参数视为rustup工具链名称(例如+stable、+nightly等)请参阅rustup文档以理解更多关于工具链覆盖(override)的信息。
--config
KEY=VALUE or PATH- 覆盖一项Cargo配置选项。该参数应为TOML的键值对
KEY=VALUE
格式,或是一个指向Cargo配置文件的路径。该选项可多次设定。请参阅命令行覆盖以了解更多信息。 -C
PATH- 在执行任何Cargo操作前,先将工作目录替换为给定路径。这将影响诸如Cargo寻找默认的清单文件(
Cargo.toml
)以及Cargo配置文件.cargo/config.toml
等的行为。该选项必须在任何子命令之前给出,例如cargo -C path/to/my-project build
。该选项尽在nightly channel版本工具链中可用,且需要打开
-Z unstable-options
选项 (请参阅#10098)。 -h
--help
- 打印帮助信息。
-Z
flag- 启用Cargo不稳定功能(nightly专有)。运行
cargo -Z help
以了解详细信息。
环境变量
请参阅该参考资料,以详细了解Cargo所读取的环境变量。
退出状态码
0
: Cargo操作成功。101
: Cargo操作未能成功。
使用样例
-
将全部依赖分发到本地的
vendor
目录中cargo vendor
-
将全部依赖分发到本地的
third-party/vendor
目录中cargo vendor third-party/vendor
-
将当前工作空间和另一个工作空间(由Cargo.toml文件指定)分发到本地的
vendor
目录中cargo vendor -s ../path/to/Cargo.toml
-
Vendor and redirect the necessary vendor configs to a config file.
cargo vendor > path/to/my/cargo/config.toml