入门 The Cargo Team 2026-09-13 15:48:22 · 0 阅读

第49章 Cargo 命令详解:generate-lockfile

名称

cargo-generate-lockfile — 为一个 package 生成锁文件

概要

cargo generate-lockfile [选项]

描述

该命令会为当前 package 或 workspace 创建 Cargo.lock 锁文件。如果锁文件已存在,则会重新构建,将每个 package 更新到最新的可用版本。

另请参阅 cargo-update(1),它同样可以创建 Cargo.lock 锁文件,并提供了更多控制更新行为的选项。

选项

显示选项

-v
--verbose

启用详细输出。指定两次可获得“非常详细”的输出,其中包含依赖警告、构建脚本输出等额外信息。也可以通过 term.verbose 配置项 设置。

-q
--quiet

不打印 cargo 日志信息。也可以通过 term.quiet 配置项 设置。

--color when

控制何时使用彩色输出。有效取值:

  • auto(默认):自动检测终端是否支持彩色输出。
  • always:总是显示颜色。
  • never:从不显示颜色。

也可以通过 term.color 配置项 设置。

Manifest Options

--manifest-path path

Cargo.toml 文件的路径。默认情况下,Cargo 会在当前目录或任何父目录中查找 Cargo.toml 文件。

--ignore-rust-version

忽略包中的 rust-version 指定项。

--publish-time yyyy-mm-ddThh:mm:ssZ

注册表包允许的最新发布时间(不稳定特性)

这是对允许使用的包进行的一种尽力而为的过滤,具体包括:

  • 来自不支持的注册表的包始终会被接受
  • 仅尊重当前的 yank 状态,而非 --publish-time 时间点时的状态
  • 发布时间的精度
--locked

断言所使用的依赖项及版本与最初生成现有 Cargo.lock 文件时完全一致。当出现以下任一情形时,Cargo 将以错误退出:

  • 锁文件缺失。
  • 由于依赖项解析不同,Cargo 试图修改锁文件。

此选项可用于期望确定性构建的环境,例如 CI 流水线。

--offline

禁止 Cargo 以任何理由访问网络。若未设置此标志,当需要访问网络但网络不可用时,Cargo 将报错停止。设置此标志后,Cargo 在条件允许时会尝试在无网络状态下继续运行。

请注意,这可能导致与在线模式不同的依赖解析结果。Cargo 将局限于本地已下载的 crate,即使本地索引显示存在更新版本也是如此。请先使用 cargo-fetch(1) 命令下载依赖,然后再进入离线模式。

也可通过 net.offline 配置项指定。

--frozen

等同于同时指定 --locked--offline

通用选项

+toolchain

如果 Cargo 是通过 rustup 安装的,且 cargo 的第一个参数以 + 开头,该参数将被解析为 rustup 工具链名称(例如 +stable+nightly)。关于工具链覆盖机制的详细信息,请查阅 rustup 文档

--config KEY=VALUEPATH

覆盖 Cargo 配置值。参数需采用 KEY=VALUE 的 TOML 语法,或指定为额外配置文件的路径。此标志可多次指定。更多信息请参阅命令行覆盖部分

-C PATH

在执行任何指定操作前先切换当前工作目录。这会影响 Cargo 默认查找项目清单(Cargo.toml)的位置,以及搜索 .cargo/config.toml 的目录等。此选项必须放在命令名之前,例如 cargo -C path/to/my-project build

该选项仅在 nightly channel 上可用,且需要 -Z unstable-options 标志来启用(参见 #10098)。

-h
--help

打印帮助信息。

-Z flag

传递给 Cargo 的不稳定(仅 nightly)标志。运行 cargo -Z help 查看详情。

ENVIRONMENT

Cargo 可读取的环境变量详见参考文档

EXIT STATUS

  • 0:Cargo 执行成功。
  • 101:Cargo 未能完成。

EXAMPLES

  1. 为当前包或工作区创建或更新 lockfile:

    cargo generate-lockfile
    

SEE ALSO

cargo(1), cargo-update(1)

评论 (0)