cargo-publish(1)

定义

cargo-publish - 上传包到注册中心

概要

cargo publish [options]

说明

该命令将在当前目录下创建一个待分发的、压缩的 .crate 文件,其中包含包的源代码,并将其上传到注册中心。 默认的注册中心是 https://crates.io 。将执行以下步骤:

  1. 进行一些检查,包括:
    • 检查配置清单中的 package.publish 键,看是否限制发布到哪些注册中心。
  2. 按照 cargo-package(1) 中的步骤,创建 .crate 文件。
  3. 将crate上传到注册中心。需注意,服务器将对crate进行额外的检查。

该命令要求您使用 --token 选项或使用 cargo-login(1) 进行认证。

参考 了解关于包和发布的详情。

选项

发布选项

--dry-run
在不上传的情况下执行所有检查。
--token token
认证时要使用的 API token。这将覆盖存储在证书文件中的令牌(由 cargo-login(1))。

Cargo配置环境变量可用于覆盖存储在证书文件中的令牌。 crates.io的令牌可以用CARGO_REGISTRY_TOKEN环境变量指定。其他注册中心的令牌可以用以下形式的环境变量来指定 CARGO_REGISTRIES_NAME_TOKENNAME 是注册中心的名称,全部大写字母。

--no-verify
不通过构建来验证内容。
--allow-dirty
允许将带有未提交修改内容的VCS工作目录打包。
--index index
使用的注册中心索引URL。
--registry registry
要发布到的注册中心名称,定义在 Cargo 配置文件。 如果未指定, 在Cargo.toml package.publish 字段有单独的键, 那么将发布到该注册中心。 否则,将使用默认的注册中心, 由 registry.default 键定义, 默认为crates-io

包的选择

默认情况下,选中当前工作目录下的包。可用 -p 标志选择工作空间中不同的包。

-p spec
--package spec
要发布的包,见 cargo-pkgid(1) 了解 SPEC 规格。

编译选项

--target triple
对于给定架构发布。默认是主机的架构。常规格式是三元组 <arch><sub>-<vendor>-<sys>-<abi>。 运行rustc --print target-list获得支持的目标列表。 这个标志可被多次指定。

也可以通过 build.target 配置

注意,指定这个标志会使Cargo在不同的模式下运行,目标制品放在单独目录。 参见 构建缓存 文档了解详情。

--target-dir directory
所有生成制品和中间文件的目录。 也可以用 CARGO_TARGET_DIR 环境变量, 或 build.target-dir 配置。 默认为工作空间的根target

特性选择

特性标志允许你控制开启哪些特性。当没有提供特性选项时,会为每个选择的包启用 default 特性。

特性文档 了解更多内容。

-F features
--features features
激活的特性列表用空格或逗号分隔。可以用package-name/feature-name语法启用工作空间成员的特性。这个标志可以被多次指定,从而可以启用所有指定的特性。
--all-features
激活所有选定包的所有可用特性。
--no-default-features
不激活所选包的default特性。

配置选项

--manifest-path path
Cargo.toml 文件的路径。默认, Cargo 在当前目录和任意父目录搜索 Cargo.toml 文件。
--frozen
--locked
这些标志都要求 Cargo.lock 文件是最新的。 如果lock文件丢失, 或是需要更新, Cargo会返回错误并退出,--frozen 选项还会阻止cargo通过网络来判断其是否过期。

可以用于断言 Cargo.lock 文件是否最新状态(例如CI构建)或避免网络访问。

--offline
阻止Cargo访问网络。如果不指定该选项,Cargo会在需要使用网络但不可用时停止构建并返回错误。设置该标识,Cargo将尽可能不使用网络完成构建。

需注意,这样可能会导致与在线模式不同的依赖处理,Cargo将限制仅使用已下载到本地的crate,即使本地索引中有更新版本。 查阅 cargo-fetch(1) 命令,在脱机前下载依赖。

也可以用 net.offline 配置

其它选项

-j N
--jobs N
并行执行的任务数。可以通过 build.jobs 配置。默认值为逻辑CPU数。如果设置为负值,则最大的并行任务数为*逻辑CPU数*加*这个负数*。该值不能为0。
--keep-going
尽可能的构建依赖图中的 crate ,而不是一个失败就停止。功能还不稳定,需要 -Zunstable-options

Display Options

-v
--verbose
进行详细输出。可以指定两遍来开启 "非常详细" 模式,输出更多的额外信息,像是依赖项的警告和构建脚本的输出信息。 也可以通过 term.verbose 配置
-q
--quiet
不打印 cargo 日志信息。 也可以通过 term.quiet 配置
--color when
控制使用彩色输出。可选值有:

  • auto (默认值): 自动检测终端是否支持彩色输出。
  • always: 总是显示彩色。
  • never: 从不显示彩色。

也可以在 term.color 配置

常规选项

+toolchain
如果Cargo已经通过rustup安装,并且第一个传给 cargo 的参数以 + 开头, 则当作rustup的工具链名称。(例如 +stable+nightly). 查阅 rustup 文档 了解关于工具链覆盖的信息。
--config KEY=VALUE or PATH
覆盖Cargo配置项的值,该参数应当为TOML KEY=VALUE 语法, 或者提供附加的配置文件的路径。该标识可以多次指定。 查阅 命令行覆盖部分 获取更多信息
-h
--help
打印帮助信息。
-Z flag
Cargo不稳定的(每日构建)标志。运行 cargo -Z help 了解详情。

环境

查阅 参考 了解Cargo读取环境变量。

退出状态

  • 0: Cargo 执行成功。
  • 101: Cargo 没有成功完成。

示例

  1. 发而当前的包:

    cargo publish
    

参阅

cargo(1), cargo-package(1), cargo-login(1)