This tool extends Cargo to allow you to add, remove, and upgrade dependencies by modifying your Cargo.toml
file from the command line.
Currently available subcommands:
Thanks for your interest - we gratefully welcome contributions.
Questions can be asked in issues, or on Gitter.
To help us help you get pull requests merged quickly and smoothly, open an issue before submitted large changes. Please keep the contents of pull requests and commits short. Commit messages should include the intent of the commit.
cargo-edit
has a moderately comprehensive test suite. Contributions that add/improve tests are awesome. Please add tests for every change.
cargo-edit
uses rustfmt
for formatting and clippy
for linting.
Ensure that you have a fairly recent version of rust/cargo installed. On Ubuntu you would also need to install libssl-dev
and pkg-config
packages.
console,ignore
$ cargo install cargo-edit
If you wish to use a bundled version of openssl
:
console,ignore
$ cargo install cargo-edit --features vendored-openssl
Compiler support: requires rustc 1.44+
(Please check cargo
's documentation to learn how cargo install
works and how to set up your system so it finds binaries installed by cargo
.)
Install a sub-set of the commands with cargo install -f --no-default-features --features "<COMMANDS>"
, where <COMMANDS>
is a space-separated list of commands; i.e. add rm upgrade
for the full set.
cargo add
cargo add
is now integrated into cargo
as of v1.62. If you want access in older versions of cargo
, you'll need to install cargo-edit
v0.9 or earlier.
Known differences from cargo-edit
v0.9.1
- cargo add <path>
is unsupported, instead use cargo add --path <path>
- cargo add <crate> +<feature>
is unsupported, instead use cargo add <crate> -F <feature>
- If adding multiple crates, qualify the feature like cargo add serde -F serde/derive serde_json
- See rust-lang/cargo#10809
cargo rm
Remove dependencies from your Cargo.toml
.
console,ignore
$ # Remove a dependency
$ cargo rm regex
$ # Remove a development dependency
$ cargo rm regex --dev
$ # Remove a build dependency
$ cargo rm regex --build
```console $ cargo-rm rm --help cargo-rm [..] Remove a dependency from a Cargo.toml manifest file
USAGE:
cargo rm [OPTIONS]
ARGS:
OPTIONS:
--manifest-path
SECTION:
-D, --dev Remove as development dependency
-B, --build Remove as build dependency
--target
```
cargo upgrade
Upgrade dependencies in your Cargo.toml
to their latest versions.
To specify a version to upgrade to, provide the dependencies in the <crate name>@<version>
format,
e.g. cargo upgrade docopt@~0.9.0 serde@>=0.9,<2.0
.
This command differs from cargo update
, which updates the dependency versions recorded in the
local lock file (Cargo.lock).
```console,ignore
$ cargo upgrade
$ cargo upgrade docopt@~0.9 serde@>=0.9,<2.0
$ cargo upgrade regex --workspace
$ cargo upgrade --exclude docopt serde ```
```console $ cargo-upgrade upgrade --help cargo-upgrade [..] Upgrade dependency version requirements in Cargo.toml manifest files
USAGE: cargo upgrade [OPTIONS]
OPTIONS:
--dry-run Print changes to be made without making them
--manifest-path Cargo.toml
to be up to date
-v, --verbose Use verbose output
-Z
VERSION:
--compatible [
-i, --incompatible [<allow|ignore>...]
Upgrade to latest incompatible version [default: ignore]
--pinned [<allow|ignore>...]
Upgrade pinned to latest incompatible version [default: ignore]
DEPENDENCIES:
-p, --package
```
cargo set-version
Set the version in your Cargo.toml
.
```console,ignore
$ cargo set-version 1.0.0
$ cargo set-version --bump major
$ cargo set-version --bump minor
$ cargo set-version --bump patch ```
```console $ cargo-set-version set-version --help cargo-set-version [..] Change a package's version in the local manifest file (i.e. Cargo.toml)
USAGE: cargo set-version [OPTIONS] [TARGET]
ARGS:
OPTIONS:
--all [deprecated in favor of --workspace
]
--bump
```
For more on metadata
, see the
semver crate's documentation.
Apache-2.0/MIT