cargo-publish - Upload a package to the registry
cargo publish
[options]
This command will create a distributable, compressed .crate
file with the
source code of the package in the current directory and upload it to a
registry. The default registry is https://crates.io. This performs the
following steps:
- Performs a few checks, including:
- Checks the
package.publish
key in the manifest for restrictions on which registries you are allowed to publish to.
- Checks the
- Create a
.crate
file by following the steps in cargo-package(1). - Upload the crate to the registry. Note that the server will perform additional checks on the crate.
This command requires you to be authenticated with either the --token
option
or using cargo-login(1).
See the reference for more details about packaging and publishing.
--dry-run
- Perform all checks without uploading.
--token
token- API token to use when authenticating. This overrides the token stored in
the credentials file (which is created by cargo-login(1)).
Cargo config environment variables can be used to override the tokens stored in the credentials file. The token for crates.io may be specified with the
CARGO_REGISTRY_TOKEN
environment variable. Tokens for other registries may be specified with environment variables of the formCARGO_REGISTRIES_NAME_TOKEN
whereNAME
is the name of the registry in all capital letters. --no-verify
- Don't verify the contents by building them.
--allow-dirty
- Allow working directories with uncommitted VCS changes to be packaged.
--index
index- The URL of the registry index to use.
--registry
registry- Name of the registry to publish to. Registry names are defined in Cargo
config files. If not specified, and there is a
package.publish
field inCargo.toml
with a single registry, then it will publish to that registry. Otherwise it will use the default registry, which is defined by theregistry.default
config key which defaults tocrates-io
.
By default, the package in the current working directory is selected. The -p
flag can be used to choose a different package in a workspace.
-p
spec--package
spec- The package to publish. See cargo-pkgid(1) for the SPEC format.
--target
triple- 为指定架构执行 Publish 。默认情况下为本机的架构。三元组的格式为
<arch><sub>-<vendor>-<sys>-<abi>
。执行rustc --print target-list
可得到支持的构建目标列表。也可通过
build.target
指定(config value)。注意,指定该标志参数会使Cargo产生的构建工件放在与平常不同的目录下。 详情参见build cache
--target-dir
directory- 用于存放生成的工件以及中间文件的目录。也可通过环境变量
CARGO_TARGET_DIR
或build.target-dir
config value指定。默认情况下为根工作区中的
target
目录。
可通过传递特性参数来控制启用哪些特性。如果没有给定要使用的特性,
则每个已选择的包都会自动使用default
特性。
--features
features- 传递以空格或者逗号分隔的列表,其中给出要启用的特性。工作区成员的特性可通过
包名/特性名
的语法启用。 此参数可多次给定,以分别启用给定的特性。 --all-features
- 为给定的包启用全部可用特性
--no-default-features
- 不启用给定包的
default
特性
--manifest-path
path- 用于指定
Cargo.toml
文件的路径。默认情况下,Cargo会在当前目录或上级目录中寻找Cargo.toml
文件。 --frozen
--locked
- 这两个选项用于保证
Cargo.lock
文件是最新的。如果该锁文件不存在,或者不是最新的,Cargo 会报错退出。其中--frozen
选项会阻止Cargo访问网络以检查锁文件是否是最新的。这些选项,可用于保证
Cargo.lock
文件是最新的(比如持续集成的构建过程), 或用于避免联网。 --offline
- 禁止Cargo访问网络。如果不添加此选项,Cargo在需要访问网络但网络不可用的情况下,会报错
并停止工作。添加此选项后,Cargo会尽可能尝试不使用网络来工作。
注意,在此情况下可能会产生与联网状态下不同的依赖解析(Dependency Resolution)结果。 Cargo只会使用本地已下载的crate,即便本地的索引副本中表明可能有新版本crate。在离线前下载 所需依赖的方法,参见 cargo-fetch(1) 。
也可以通过
net.offline
config value指定。
-j
N--jobs
N- 要并行运行的作业数量。也可通过
build.jobs
config value指定。 默认为CPU数量。
-v
--verbose
- 启用更加详细的输出。可两次使用来显示"非常详细"的输出,其中包含了诸如 依赖警告 以及 构建脚本输出 等额外的输出内容。
也可通过
term.verbose
指定。 config value. -q
--quiet
- 不输出Cargo的日志信息。也可通过
term.quiet
指定。 config value. --color
when- 控制输出内容的颜色。有效取值如下:
auto
(默认):自动检测终端是否支持带颜色的输出。always
:总显示带颜色的输出。never
:从不显示带颜色的输出。
也可通过
term.color
指定。 config value.
+
toolchain- If Cargo has been installed with rustup, and the first argument to
cargo
begins with+
, it will be interpreted as a rustup toolchain name (such as+stable
or+nightly
). See the rustup documentation for more information about how toolchain overrides work. -h
--help
- Prints help information.
-Z
flag- Unstable (nightly-only) flags to Cargo. Run
cargo -Z help
for details.
关于Cargo所读取的环境变量,可参见the reference
0
: Cargo命令执行成功101
: Cargo命令未能完成.
-
Publish the current package:
cargo publish