# cargo package

## NAME

cargo-package - Assemble the local package into a distributable tarball

## SYNOPSIS

`cargo package [OPTIONS]`

## DESCRIPTION

This command will create a distributable, compressed `.crate` file with the source code of the package in the current directory. The resulting file will be stored in the `target/package` directory. This performs the following steps:

1. Load and check the current workspace, performing some basic checks.

   - Path dependencies are not allowed unless they have a version key. Cargo will ignore the path key for dependencies in published packages.

2. Create the compressed `.crate` file.

   - The original `Cargo.toml` file is rewritten and normalized.

   - A `.cargo_vcs_info.json` file is included that contains information about the current VCS checkout hash if available (not included with `--allow-dirty`).

3. Extract the `.crate` file and build it to verify it can build.

4. Check that build scripts did not modify any source files.

The list of files included can be controlled with the `include` and `exclude` fields in the manifest.

See the reference for more details about packaging and publishing.

## OPTIONS

### Package Options

-l
--list

  Print files included in a package without making one.

--no-verify

  Don’t verify the contents by building them.

--no-metadata

  Ignore warnings about a lack of human-usable metadata (such as the description or the license).

--allow-dirty

  Allow working directories with uncommitted VCS changes to be packaged.

### Compilation Options

--target TRIPLE

  Package for the given architecture. The default is the host architecture.

  The general format of the triple is `<arch><sub>-<vendor>-<sys>-<abi>` where:

  - `arch` = The base CPU architecture, for example `x86_64`, `i686`, `arm`, `thumb`, `mips`, etc.

  - `sub` = The CPU sub-architecture, for example `arm` has `v7`, `v7s`, `v5te`, etc.

  - `vendor` = The vendor, for example `unknown`, `apple`, `pc`, `linux`, etc.

  - `sys` = The system name, for example `linux`, `windows`, etc. `none` is typically used for bare-metal without an OS.

  - `abi` = The ABI, for example `gnu`, `android`, `eabi`, etc.

  Some parameters may be omitted. Run `rustc --print target-list` for a list of supported targets.

  This may also be specified with the `build.target` config value.

--target-dir DIRECTORY

  Directory for all generated artifacts and intermediate files. May also be specified with the `CARGO_TARGET_DIR` environment variable, or the `build.target-dir` config value. Defaults to `target` in the root of the workspace.

### Manifest Options

--manifest-path PATH

  Path to the `Cargo.toml` file. By default, Cargo searches in the current directory or any parent directory for the `Cargo.toml` file.

--frozen
--locked

  Either of these flags requires that the `Cargo.lock` file is up-to-date. If the lock file is missing, or it needs to be updated, Cargo will exit with an error. The `--frozen` flag also prevents Cargo from attempting to access the network to determine if it is out-of-date.

  These may be used in environments where you want to assert that the `Cargo.lock` file is up-to-date (such as a CI build) or want to avoid network access.

### Miscellaneous Options

-j N
--jobs N

  Number of parallel jobs to run. May also be specified with the `build.jobs` config value. Defaults to the number of CPUs.

### Display Options

-v
--verbose

  Use verbose output. May be specified twice for "very verbose" output which includes extra output such as dependency warnings and build script output. May also be specified with the `term.verbose` config value.

-q
--quiet

  No output printed to stdout.

--color WHEN

  Control when colored output is used. Valid values:

  - `auto` (default): Automatically detect if color support is available on the terminal.

  - `always`: Always display colors.

  - `never`: Never display colors.

  May also be specified with the `term.color` config value.

### Common Options

-h
--help

  Prints help information.

-Z FLAG…​

  Unstable (nightly-only) flags to Cargo. Run `cargo -Z help` for details.

## ENVIRONMENT

See the reference for details on environment variables that Cargo reads.

## Exit Status

0

  Cargo succeeded.

101

  Cargo failed to complete.

## EXAMPLES

1. Create a compressed `.crate` file of the current package:

       cargo package

## SEE ALSO

cargo(1), cargo-publish(1)