如何使用包的 composer.lock 文件进行作曲安装?

How to composer install using a package's composer.lock file?

如果我有:

{
    "name": "fresh",
    "type": "library",
    "require": {
        "consolidation/robo": "3.0.3"
    }
}

然后运行composer install 它将安装 consolidation/robo 并更新 consolidation/robo 内部依赖项,而不是使用 consolidation/robo 内部 composer.lock 来获取库的已知工作版本。

如何让 composer install 在安装 consolidation/robo 依赖项时使用 https://github.com/consolidation/robo/blob/3.0.3/composer.lock 而不是 运行 在 [=15= 上使用 composer update 的等效项]?

目前,它正在检索损坏的内部依赖项,我必须在我的根 composer.json 中概述应该检索哪个内部依赖项。其中 https://github.com/consolidation/robo/blob/3.0.3/composer.lock 具有库的工作版本。

这就是 composer 应该 工作的方式。

依赖项的锁定文件被忽略,这是设计使然。如果您使用的软件包已破坏版本限制(例如,它说它与 foo/bar^2.1 兼容,但实际上只测试了 >= 2.1.0 && <= 2.2.2 版本,并且安装了 [=] 的 2.3 版本12=] 中断),这是因为 foo/bar 违反了 semver 承诺,或者因为您依赖的包没有经过充分测试。

你可以做的就是在你的根目录中添加 composer.json:

{
 "conflict":
     "foo/bar": ">=2.3"
}