# cargo-add(1)

## NAME

cargo-add - Add dependencies to a Cargo.toml manifest file

## SYNOPSIS

`cargo add` [options] crate...
`cargo add` [options] `--path` path
`cargo add` [options] `--git` url [crate...]

## DESCRIPTION

This command can add or modify dependencies.

The source for the dependency can be specified with:

- crate`@`version: Fetch from a registry with a version constraint of "version"
- `--path` path: Fetch from the specified path
- `--git` url: Pull from a git repo at url

If no source is specified, then a best effort will be made to select one, including:

- Existing dependencies in other tables (like `dev-dependencies`)
- Workspace members
- Latest release in the registry

When you add a package that is already present, the existing entry will be updated with the flags specified.

## OPTIONS

### Source options

`--git` url
  Git URL to add the specified crate from.
`--branch` branch
  Branch to use when adding from git.
`--tag` tag
  Tag to use when adding from git.
`--rev` sha
  Specific commit to use when adding from git.
`--path` path
  Filesystem path to local crate to add.
`--registry` registry
  Name of the registry to use. Registry names are defined in Cargo config files. If not specified, the default registry is used, which is defined by the `registry.default` config key which defaults to `crates-io`.

### Section options

`--dev`
  Add as a development dependency.
`--build`
  Add as a build dependency.
`--target` target
  Add as a dependency to the given target platform.

### Dependency options

`--rename` name
  Rename the dependency.
`--optional`
  Mark the dependency as optional.
`--no-optional`
  Mark the dependency as required.
`--no-default-features`
  Disable the default features.
`--default-features`
  Re-enable the default features.
`--features` features
  Space or comma separated list of features to activate. When adding multiple crates, the features for a specific crate may be enabled with `package-name/feature-name` syntax. This flag may be specified multiple times, which enables all specified features.

### 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`
  Do not print cargo log messages. May also be specified with the `term.quiet` config value.
`--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.

### Manifest Options

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

### Common Options

`+`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.

## ENVIRONMENT

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

## EXIT STATUS

- `0`: Cargo succeeded.
- `101`: Cargo failed to complete.

## EXAMPLES

1. Add `regex` as a dependency

       cargo add regex

2. Add `trybuild` as a dev-dependency

       cargo add --dev trybuild

3. Add an older version of `nom` as a dependency

       cargo add nom@5

4. Add support for serializing data structures to json with `derive`s

       cargo add serde serde_json -F serde/derive

## SEE ALSO

cargo(1)