cargo-publish(1)
名称
cargo-publish — 上传包到注册表
概要
cargo publish [选项]
描述
此命令将在当前目录中创建包含包源代码的可分发压缩 .crate 文件,并将其上传到注册表。默认注册表是 https://crates.io。此命令执行以下步骤:
- 执行一些检查,包括:
- 检查清单文件中的
package.publish键,以确定允许发布到哪些注册表。
- 检查清单文件中的
- 按照 cargo-package(1) 中的步骤创建一个
.crate文件。 - 将 crate 上传到注册表。服务器将对 crate 执行额外的检查。
- 客户端将轮询等待包出现在索引中,并可能超时。在这种情况下,您需要手动检查是否完成。此超时不影响上传。
此命令要求您使用 --token 选项或通过 cargo-login(1) 进行身份验证。
有关打包和发布的更多详细信息,请参阅参考。
选项
发布选项
--dry-run- 执行所有检查,但不执行上传。
--tokentoken- 进行身份验证时使用的 API token。这会覆盖凭据文件中存储的 token(凭据文件由 cargo-login(1) 创建)。
Cargo 配置环境变量可用于覆盖存储在凭据文件中的 token。crates.io 的 token 可以通过
CARGO_REGISTRY_TOKEN环境变量指定。其他注册表的 token 可以通过CARGO_REGISTRIES_NAME_TOKEN形式的环境变量指定,其中NAME是注册表的名称,全部使用大写字母。 --no-verify- 不通过构建来验证内容。
--allow-dirty- 允许打包包含未提交的 VCS 更改的工作目录。
--indexindex- 要使用的注册表索引的 URL。
--registryregistry- 要发布的注册表名称。注册表名称在Cargo 配置文件中定义。如果未指定,并且
Cargo.toml中有一个带有单个注册表的package.publish字段,则将发布到该注册表。否则将使用默认注册表,默认注册表由registry.default配置键定义,该键默认为crates-io。
包选择
默认情况下,在未指定包选择选项时,所选包取决于所选清单文件(如果未提供 --manifest-path,则基于当前工作目录)。如果清单文件是工作空间的根,则选择工作空间的默认成员,否则仅选择清单文件定义的包。
可以使用根清单文件中的 workspace.default-members 键显式设置工作空间的默认成员。如果未设置此项,则虚拟工作空间将包含所有工作空间成员(相当于传递 --workspace),而非虚拟工作空间将仅包含根 crate 本身。
选择多个包是不稳定的,仅在nightly channel上可用,并且需要启用 -Z package-workspace 标志。有关更多信息,请参阅https://github.com/rust-lang/cargo/issues/10948。
-pspec…--packagespec…- 仅发布指定的包。有关 SPEC 格式,请参阅 cargo-pkgid(1)。此标志可以多次指定,并支持常见的 Unix glob 模式,如
*、?和[]。但是,为了避免 shell 在 Cargo 处理 glob 模式之前意外地展开它们,您必须在每个模式周围使用单引号或双引号。使用此选项选择多个包是不稳定的,仅在nightly channel上可用,并且需要启用
-Z package-workspace标志。有关更多信息,请参阅https://github.com/rust-lang/cargo/issues/10948。 --workspace- 发布工作空间中的所有成员。
此选项是不稳定的,仅在nightly channel上可用,并且需要启用
-Z package-workspace标志。有关更多信息,请参阅https://github.com/rust-lang/cargo/issues/10948。 --excludeSPEC…- 排除指定的包。必须与
--workspace标志一起使用。此标志可以多次指定,并支持常见的 Unix glob 模式,如*、?和[]。但是,为了避免 shell 在 Cargo 处理 glob 模式之前意外地展开它们,您必须在每个模式周围使用单引号或双引号。此选项是不稳定的,仅在nightly channel上可用,并且需要启用
-Z package-workspace标志。有关更多信息,请参阅https://github.com/rust-lang/cargo/issues/10948。
编译选项
--targettriple- 为给定的架构发布。默认是主机架构。triple 的一般格式是
<arch><sub>-<vendor>-<sys>-<abi>。运行rustc --print target-list查看支持的目标列表。此标志可以多次指定。也可以使用
build.targetconfig value 指定此项。请注意,指定此标志会使 Cargo 在不同的模式下运行,目标 artifacts 将放置在单独的目录中。有关更多详细信息,请参阅构建缓存文档。
--target-dirdirectory- 所有生成的 artifact 和中间文件的目录。也可以通过
CARGO_TARGET_DIR环境变量或build.target-dir配置值指定。默认为工作空间根目录下的target。
特性选择
特性标志允许您控制启用哪些特性。未指定特性选项时,每个选定的包都会激活 default 特性。
有关更多详细信息,请参阅特性文档。
-Ffeatures--featuresfeatures- 要激活的特性列表,用空格或逗号分隔。可以使用
package-name/feature-name语法启用工作空间成员的特性。此标志可以多次指定,这将启用所有指定的特性。 --all-features- 激活所有选定包的所有可用特性。
--no-default-features- 不激活选定包的
default特性。
清单选项
--manifest-pathpathCargo.toml文件路径。默认情况下,Cargo 在当前目录或任何父目录中搜索Cargo.toml文件。--locked- 断言使用与现有
Cargo.lock文件最初生成时完全相同的依赖项和版本。在以下任一情况下,Cargo 将退出并报错:- 锁文件缺失。
- 由于不同的依赖项解析,Cargo 尝试更改锁文件。
它可以在需要确定性构建的环境中使用,例如在 CI 流水线中。
--offline- 阻止 Cargo 出于任何原因访问网络。如果未指定此标志,当需要访问网络而网络不可用时,Cargo 将报错停止。指定此标志后,Cargo 将尝试在可能的情况下不依赖网络继续执行。
请注意,这可能导致与在线模式不同的依赖项解析。Cargo 将仅限于本地下载的 crates,即使本地索引副本中可能显示有更新的版本。请参阅 cargo-fetch(1) 命令,以便在离线前下载依赖项。
也可以通过
net.offlineconfig value 指定此项。 --frozen- 相当于同时指定
--locked和--offline。 --lockfile-pathPATH- 将锁文件的路径从默认值(
<工作空间根目录>/Cargo.lock)更改为 PATH。PATH 必须以Cargo.lock结尾(例如--lockfile-path /tmp/temporary-lockfile/Cargo.lock)。请注意,提供--lockfile-path将忽略默认路径下的现有锁文件,而是使用来自 PATH 的锁文件,或者如果该路径不存在锁文件,则将新的锁文件写入提供的 PATH。此标志可用于在只读目录中运行大多数命令,将锁文件写入提供的 PATH。此选项仅在nightly channel上可用,并且需要启用
-Z unstable-options标志(参见#14421)。
杂项选项
-jN--jobsN- 并行运行的作业数量。也可以通过
build.jobs配置值指定。默认为逻辑 CPU 的数量。如果为负,则将最大并行作业数设置为逻辑 CPU 数量加上提供的值。如果提供字符串default,则将值重置为默认值。不应为 0。 --keep-going- 尽可能多地构建依赖图中的 crates,而不是在第一个构建失败的 crate 上中止构建。
例如,如果当前包依赖于依赖项
fails和works,其中一个构建失败,cargo publish -j1可能构建成功的那一个也可能不构建(取决于 Cargo 先选择运行哪一个),而cargo publish -j1 --keep-going则肯定会运行这两个构建,即使先运行的那个失败了。
显示选项
-v--verbose- 使用详细输出。可以指定两次以获得“非常详细”的输出,包括依赖项警告和构建脚本输出等额外输出。也可以通过
term.verbose配置值指定。 -q--quiet- 不打印 cargo 日志消息。也可以通过
term.quiet配置值指定。 --colorwhen- 控制何时使用彩色输出。有效值:
auto(默认):自动检测终端是否支持颜色。always:始终显示颜色。never:从不显示颜色。
也可以通过
term.color配置值指定此项。
通用选项
+toolchain- 如果 Cargo 使用 rustup 安装,并且
cargo的第一个参数以+开头,则它将被解释为 rustup toolchain 名称(例如+stable或+nightly)。有关 toolchain 覆盖如何工作的更多信息,请参阅rustup 文档。 --configKEY=VALUE or PATH- 覆盖 Cargo 配置值。参数应采用 TOML 语法
KEY=VALUE,或提供额外配置文件的路径。此标志可以多次指定。有关更多信息,请参阅命令行覆盖部分。 -CPATH- 在执行任何指定的操作之前更改当前工作目录。这会影响 Cargo 默认查找项目清单文件 (
Cargo.toml) 的位置,以及搜索发现.cargo/config.toml等文件的目录。此选项必须出现在命令名称之前,例如cargo -C path/to/my-project build。此选项仅在nightly channel上可用,并且需要启用
-Z unstable-options标志(参见#10098)。 -h--help- 打印帮助信息。
-Zflag- Cargo 的不稳定(仅 nightly 版本)标志。运行
cargo -Z help获取详细信息。
环境变量
有关 Cargo 读取的环境变量的详细信息,请参阅参考。
退出状态
0:Cargo 执行成功。101:Cargo 执行失败。
示例
-
发布当前包
cargo publish