| CARGO-PUBLISH(1) | General Commands Manual | CARGO-PUBLISH(1) |
NAME
cargo-publish — Upload a package to the registry
SYNOPSIS
cargo publish [options]
DESCRIPTION
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:
This command requires you to be authenticated using cargo-login(1) or environment variables of the registry.token https://doc.rust-lang.org/cargo/reference/config.html#registrytoken and registries.<name>.token https://doc.rust-lang.org/cargo/reference/config.html#registriesnametoken config fields.
See the reference https://doc.rust-lang.org/cargo/reference/publishing.html for more details about packaging and publishing.
OPTIONS
Publish Options
--dry-run
--no-verify
--allow-dirty
--index index
--registry registry
Package Selection
By default, when no package selection options are given, the packages selected depend on the selected manifest file (based on the current working directory if --manifest-path is not given). If the manifest is the root of a workspace then the workspaces default members are selected, otherwise only the package defined by the manifest will be selected.
The default members of a workspace can be set explicitly with the workspace.default-members key in the root manifest. If this is not set, a virtual workspace will include all workspace members (equivalent to passing --workspace), and a non-virtual workspace will include only the root crate itself.
-p spec…, --package spec…
--workspace
--all
--exclude SPEC…
Compilation Options
--target triple
Possible values:
This may also be specified with the build.target config value https://doc.rust-lang.org/cargo/reference/config.html.
Note that specifying this flag makes Cargo run in a different mode where the target artifacts are placed in a separate directory. See the build cache https://doc.rust-lang.org/cargo/reference/build-cache.html documentation for more details.
--target-dir directory
Feature Selection
The feature flags allow you to control which features are enabled. When no feature options are given, the default feature is activated for every selected package.
See the features documentation https://doc.rust-lang.org/cargo/reference/features.html#command-line-feature-options for more details.
-F features, --features features
--all-features
--no-default-features
Manifest Options
--manifest-path path
--locked
It may be used in environments where deterministic builds are desired, such as in CI pipelines.
--offline
Beware that this may result in different dependency resolution than online mode. Cargo will restrict itself to crates that are downloaded locally, even if there might be a newer version as indicated in the local copy of the index. See the cargo-fetch(1) command to download dependencies before going offline.
May also be specified with the net.offline config value https://doc.rust-lang.org/cargo/reference/config.html.
--frozen
Miscellaneous Options
-j N, --jobs N
--keep-going
For example if the current package depends on dependencies fails and works, one of which fails to build, cargo publish -j1 may or may not build the one that succeeds (depending on which one of the two builds Cargo picked to run first), whereas cargo publish -j1 --keep-going would definitely run both builds, even if the one run first fails.
Display Options
-v, --verbose
-q, --quiet
--color when
May also be specified with the term.color config value https://doc.rust-lang.org/cargo/reference/config.html.
Common Options
+toolchain
--config KEY=VALUE or PATH
-C PATH
This option is only available on the nightly channel https://doc.rust-lang.org/book/appendix-07-nightly-rust.html and requires the -Z unstable-options flag to enable (see #10098 https://github.com/rust-lang/cargo/issues/10098).
-h, --help
-Z flag
ENVIRONMENT
See the reference https://doc.rust-lang.org/cargo/reference/environment-variables.html for details on environment variables that Cargo reads.
EXIT STATUS
EXAMPLES
cargo publish