conan lock add

$ conan lock add -h
usage: conan lock add [-h] [--out-file OUT_FILE] [-v [V]] [-cc CORE_CONF]
                      [--requires REQUIRES] [--build-requires BUILD_REQUIRES]
                      [--python-requires PYTHON_REQUIRES]
                      [--config-requires CONFIG_REQUIRES]
                      [--lockfile-out LOCKFILE_OUT] [--lockfile LOCKFILE]

Add requires, build-requires or python-requires to an existing or new
lockfile. The resulting lockfile will be ordered, newer versions/revisions
first. References can be supplied with and without revisions like "--
requires=pkg/version", but they must be package references, including at least
the version, and they cannot contain a version range.

options:
  -h, --help            show this help message and exit
  --out-file OUT_FILE   Write the output of the command to the specified file
                        instead of stdout.
  -v [V]                Level of detail of the output. Valid options from less
                        verbose to more verbose: -vquiet, -verror, -vwarning,
                        -vnotice, -vstatus, -v or -vverbose, -vv or -vdebug,
                        -vvv or -vtrace
  -cc CORE_CONF, --core-conf CORE_CONF
                        Define core configuration, overwriting global.conf
                        values. E.g.: -cc core:non_interactive=True
  --requires REQUIRES   Add references to lockfile.
  --build-requires BUILD_REQUIRES
                        Add build-requires to lockfile
  --python-requires PYTHON_REQUIRES
                        Add python-requires to lockfile
  --config-requires CONFIG_REQUIRES
                        Add config-requires to lockfile
  --lockfile-out LOCKFILE_OUT
                        Filename of the created lockfile
  --lockfile LOCKFILE   Filename of the input lockfile

conan lock add 命令能够将包版本添加到现有或新的锁定文件中,例如 requiresbuild_requirespython_requiresconfig_requires

例如,以下命令能够创建一个锁定文件(默认命名为 conan.lock):

$ conan lock add --requires=pkg/1.1 --build-requires=tool/2.2 --python-requires=mypytool/3.3
Generated lockfile: ...conan.lock

$cat conan.lock
{
    "version": "0.5",
    "requires": [
        "pkg/1.1"
    ],
    "build_requires": [
        "tool/2.2"
    ],
    "python_requires": [
        "mypytool/3.3"
    ]
}

conan lock add 命令还允许提供一个现有的锁定文件作为输入,它会将参数添加到现有的锁定文件中,并保持包版本排序。

$ conan lock add --build-requires=tool/2.3 --lockfile=conan.lock
Using lockfile: '.../conan.lock'
Generated lockfile: .../conan.lock

$ cat conan.lock
{
    "version": "0.5",
    "requires": [
        "pkg/1.1"
    ],
    "build_requires": [
        "tool/2.3",
        "tool/2.2"
    ],
    "python_requires": [
        "mypytool/3.3"
    ]
}

conan lock add 命令不对锁定文件、包、包的存在、包版本的存在,或这些包在给定的依赖关系图中是否存在进行任何检查,它只是对 json 信息进行基本操作。 当该锁定文件用于解析依赖关系图时,添加的版本可能不存在,或者无法为定义的 conanfile.py recipe 的版本范围解析。

此外,版本列表仍然会排序。 如果 recipe 包含版本范围 tool/[>=2.0 <3],则将较旧的版本(如 tool/2.1)添加到先前的锁定文件不会自动使用该版本,因为 tool/2.2 版本已在那里列出,并且该范围将解析为它,而不是更旧的 tool/2.1

请注意,使用 conan lock add 创建的锁定文件可能不完整,并且不包含完整依赖关系图所需的所有必要的锁定版本。 对于这些情况,请记住可以应用 --lockfile-partial 参数。 另请注意,如果当前文件夹中存在 conan.lock 文件,则 Conan 命令(如 conan install)将自动使用它。 请查看 锁定文件教程

如果显式添加修订版本,请记住修订版本是按时间戳排序的。 如果锁定文件中存在多个修订版本,则必须提供这些修订版本的时间戳,以便排序有意义,这可以通过以下方式完成:

$ conan lock add --requires=pkg/1.1#revision%timestamp

警告

  • 禁止手动操作 Conan 锁定文件,更改引用的严格排序,这可能导致任何任意的未定义行为。

  • 请记住,无法 conan lock add 版本范围。 版本可能不完全完整(例如不提供修订版本),但它必须是一个精确的版本。

注意

最佳实践

在许多情况下,此命令不是必需的。 现有的 conan installconan createconan lockconan exportconan graph 命令可以直接更新或生成新的锁定文件,其中包含它们正在创建的包的新信息,并且可以使用这些新的或更新的锁定文件继续进行处理。