# cargo-package(1)
{{*set actionverb="Package"}}
{{*set noall=true}}
{{*set multitarget=true}}
## 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.
`dev-dependencies` do not have this restriction.
2. Create the compressed `.crate` file.
- The original `Cargo.toml` file is rewritten and normalized.
- `[patch]`, `[replace]`, and `[workspace]` sections are removed from the
manifest.
- `Cargo.lock` is automatically included if the package contains an
executable binary or example target. {{man "cargo-install" 1}} will use the
packaged lock file if the `--locked` flag is used.
- 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.
- This will rebuild your package from scratch to ensure that it can be
built from a pristine state. The `--no-verify` flag can be used to skip
this step.
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](../reference/publishing.html) for more details about
packaging and publishing.
### .cargo_vcs_info.json format
Will generate a `.cargo_vcs_info.json` in the following format
```javascript
{
"git": {
"sha1": "aac20b6e7e543e6dd4118b246c77225e3a3a1302"
},
"path_in_vcs": ""
}
```
`path_in_vcs` will be set to a repo-relative path for packages
in subdirectories of the version control repository.
## OPTIONS
### Package Options
{{#options}}
{{#option "`-l`" "`--list`" }}
Print files included in a package without making one.
{{/option}}
{{#option "`--no-verify`" }}
Don't verify the contents by building them.
{{/option}}
{{#option "`--no-metadata`" }}
Ignore warnings about a lack of human-usable metadata (such as the description
or the license).
{{/option}}
{{#option "`--allow-dirty`" }}
Allow working directories with uncommitted VCS changes to be packaged.
{{/option}}
{{/options}}
{{> section-package-selection }}
### Compilation Options
{{#options}}
{{> options-target-triple }}
{{> options-target-dir }}
{{/options}}
{{> section-features }}
### Manifest Options
{{#options}}
{{> options-manifest-path }}
{{> options-locked }}
{{/options}}
### Miscellaneous Options
{{#options}}
{{> options-jobs }}
{{> options-keep-going }}
{{/options}}
### Display Options
{{#options}}
{{> options-display }}
{{/options}}
{{> section-options-common }}
{{> section-environment }}
{{> section-exit-status }}
## EXAMPLES
1. Create a compressed `.crate` file of the current package:
cargo package
## SEE ALSO
{{man "cargo" 1}}, {{man "cargo-publish" 1}}