cargo-add(1)
名称
cargo-add — 向 Cargo.toml 清单文件添加依赖项
概要
cargo add
[选项] crate…
cargo add
[选项] --path
路径
cargo add
[选项] --git
url [crate…]
描述
此命令可以添加或修改依赖项。
可以使用以下方式指定依赖项的来源:
- crate
@
版本:从注册表获取,版本约束为“版本” --path
路径:从指定的路径获取--git
url:从 url 的 git 仓库拉取
如果未指定来源,则会尽力选择一个,包括
- 其他表中的现有依赖项(如
dev-dependencies
) - 工作区成员
- 注册表中的最新版本
当您添加已存在的包时,现有条目将使用指定的标志进行更新。
成功调用后,指定依赖项的启用 (+
) 和禁用 (-
) 特性 将在命令的输出中列出。
选项
来源选项
--git
url- 从中添加指定 crate 的 Git URL.
--branch
分支- 从 git 添加时使用的分支。
--tag
标签- 从 git 添加时使用的标签。
--rev
sha- 从 git 添加时使用的特定提交。
--path
路径- 本地 crate 的文件系统路径,用于添加。
--base
基础- 添加本地 crate 时要使用的 路径基础。
--registry
注册表- 要使用的注册表的名称。注册表名称在 Cargo 配置文件中定义。如果未指定,则使用默认注册表,该注册表由
registry.default
配置键定义,默认为crates-io
。
章节选项
--dev
- 作为 开发依赖项 添加。
--build
- 作为 构建依赖项 添加。
--target
目标- 作为依赖项添加到给定目标平台。
为避免意外的 shell 扩展,您可以使用引号将每个目标括起来,例如
--target 'cfg(unix)'
。
依赖项选项
--dry-run
- 不实际写入清单
--rename
名称- 重命名依赖项。
--optional
- 将依赖项标记为可选。
--no-optional
- 将依赖项标记为必需。
--public
- 将依赖项标记为公共。
该依赖项可以在您的库的公共 API 中引用。
--no-public
- 将依赖项标记为私有。
虽然您可以在实现中使用该 crate,但它不能在您的公共 API 中引用。
--no-default-features
- 禁用默认特性。
--default-features
- 重新启用默认特性。
-F
特性--features
特性- 空格或逗号分隔的要激活的特性列表。添加多个 crate 时,可以使用
package-name/feature-name
语法为特定 crate 启用特性。此标志可以多次指定,这将启用所有指定的特性。
显示选项
-v
--verbose
- 使用详细输出。可以指定两次以获得“非常详细”的输出,其中包括额外的输出,如依赖项警告和构建脚本输出。也可以使用
term.verbose
配置值指定。 -q
--quiet
- 不打印 cargo 日志消息。也可以使用
term.quiet
配置值指定。 --color
when- 控制何时使用彩色输出。有效值
auto
(默认):自动检测终端上是否支持颜色。always
:始终显示颜色。never
:从不显示颜色。
也可以使用
term.color
配置值指定。
清单选项
--manifest-path
路径Cargo.toml
文件的路径。默认情况下,Cargo 会在当前目录或任何父目录中搜索Cargo.toml
文件。-p
spec--package
spec- 仅向指定的包添加依赖项。
--ignore-rust-version
- 忽略包中的
rust-version
规范。 --locked
- 断言使用的依赖项和版本与最初生成现有
Cargo.lock
文件时完全相同。当出现以下任一情况时,Cargo 将退出并显示错误- 锁文件丢失。
- 由于不同的依赖项解析,Cargo 尝试更改锁文件。
它可以在需要确定性构建的环境中使用,例如在 CI 管道中。
--offline
- 阻止 Cargo 以任何理由访问网络。如果没有此标志,如果 Cargo 需要访问网络但网络不可用,则会停止并显示错误。使用此标志,如果可能,Cargo 将尝试在没有网络的情况下继续。
请注意,这可能会导致与在线模式不同的依赖项解析。Cargo 将把自己限制在本地下载的 crate 中,即使在索引的本地副本中可能存在更新的版本。请参阅 cargo-fetch(1) 命令以在离线前下载依赖项。
也可以使用
net.offline
配置值指定。 --frozen
- 等效于同时指定
--locked
和--offline
。 --lockfile-path
路径- 将锁文件的路径从默认值 (
<workspace_root>/Cargo.lock
) 更改为 路径。路径必须以Cargo.lock
结尾(例如,--lockfile-path /tmp/temporary-lockfile/Cargo.lock
)。请注意,提供--lockfile-path
将忽略默认路径下的现有锁文件,而是使用 路径 中的锁文件,如果该路径不存在,则将新的锁文件写入提供的 路径。此标志可用于在只读目录中运行大多数命令,将锁文件写入提供的 路径。此选项仅在 nightly 频道上可用,并且需要
-Z unstable-options
标志才能启用(请参阅 #14421)。
常用选项
+
工具链- 如果 Cargo 是使用 rustup 安装的,并且
cargo
的第一个参数以+
开头,则它将被解释为 rustup 工具链名称(例如+stable
或+nightly
)。有关工具链覆盖如何工作的更多信息,请参阅 rustup 文档。 --config
KEY=VALUE 或 路径- 覆盖 Cargo 配置值。参数应采用
KEY=VALUE
的 TOML 语法,或作为额外的配置文件路径提供。此标志可以多次指定。有关更多信息,请参阅 命令行覆盖部分。 -C
路径- 在执行任何指定的操作之前更改当前工作目录。这会影响诸如 cargo 默认查找项目清单 (
Cargo.toml
) 的位置,以及搜索发现.cargo/config.toml
的目录等。此选项必须出现在命令名称之前,例如cargo -C path/to/my-project build
。此选项仅在 nightly 频道上可用,并且需要
-Z unstable-options
标志才能启用(请参阅 #10098)。 -h
--help
- 打印帮助信息。
-Z
标志- Cargo 的不稳定(仅限 nightly)标志。运行
cargo -Z help
以获取详细信息。
环境变量
有关 Cargo 读取的环境变量的详细信息,请参阅参考。
退出状态
0
:Cargo 成功。101
:Cargo 未能完成。
示例
-
添加
regex
作为依赖项cargo add regex
-
添加
trybuild
作为开发依赖项cargo add --dev trybuild
-
添加旧版本的
nom
作为依赖项cargo add nom@5
-
使用
derive
s 添加对将数据结构序列化为 json 的支持cargo add serde serde_json -F serde/derive
-
在
cfg(windows)
上添加windows
作为平台特定依赖项cargo add windows --target 'cfg(windows)'