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 path
Cargo.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操作未能成功。

使用样例

  1. 将全部依赖分发到本地的vendor目录中

    cargo vendor
    
  2. 将全部依赖分发到本地的third-party/vendor目录中

    cargo vendor third-party/vendor
    
  3. 将当前工作空间和另一个工作空间(由Cargo.toml文件指定)分发到本地的vendor目录中

    cargo vendor -s ../path/to/Cargo.toml
    
  4. Vendor and redirect the necessary vendor configs to a config file.

    cargo vendor > path/to/my/cargo/config.toml
    

另请参阅

cargo(1)