Composer php 编写器更新的不同处理

Composer php 编写器更新的不同处理,composer-php,Composer Php,我和我的团队正在进行一个使用Composer进行依赖关系管理的项目。在多台机器(运行相同的最新版本的composer)上处理composer更新的方式似乎有所不同,但我们无法找出原因 当我的队友对依赖项运行composer更新时,它会尝试从composer.lock文件中删除大量数据/节点(如整个dist和support节点): 当我运行相同的更新时,它会再次尝试重新添加所有这些键: 我们不明白为什么会发生这种情况。这是一种特定的环境吗 更新:进一步检查,似乎“(dis)出现的”节点都包含h

我和我的团队正在进行一个使用Composer进行依赖关系管理的项目。在多台机器(运行相同的最新版本的composer)上处理
composer更新的方式似乎有所不同,但我们无法找出原因

当我的队友对依赖项运行
composer更新时,它会尝试从
composer.lock
文件中删除大量数据/节点(如整个
dist
support
节点):

当我运行相同的更新时,它会再次尝试重新添加所有这些键:

我们不明白为什么会发生这种情况。这是一种特定的环境吗


更新:进一步检查,似乎“(dis)出现的”节点都包含https链接,这可能与(丢失的)SSL库或其他什么有关吗?

似乎有一个编写者更喜欢
dist
,而另一个更喜欢
源代码

如果您在两个composer中的任何一个中定义了首选安装,请查看
~/.composer/config.json
。或者如果您在composer.json中定义了不同的首选安装

"config": {
    "preferred-install": "dist"
}
您可以强制composer将
dist
source
与一起使用

composer update --prefer-dist

--首选源代码:下载软件包有两种方式:
source
dist
。对于稳定版本,默认情况下composer将使用
dist
。源是一个版本控制存储库。如果启用了“首选源代码”,则composer将从源代码安装(如果有)。如果您想对项目进行错误修复并直接获取依赖项的本地git克隆,这将非常有用

--首选dist:
相反--首选source
,如果可能,composer将从
dist
安装。这可以大大加快在构建服务器和通常不运行供应商更新的其他用例上的安装。如果没有正确的设置,这也是避免git问题的一种方法


您正在运行最新版本的composer吗?尝试
composer selfupdate
。另外,尝试删除home dir(~/.composer)中的composer缓存@Oli是的,我们都在运行最新版本的composer。我的homedir中似乎没有composer缓存目录(ls~/.composer返回“没有这样的文件或目录”)。我猜您运行了composer并下载了发布的ZIP文件,而您的同事克隆了存储库。Composer试图坚持使用以前使用过的方法,因此一旦您克隆了repo,之后的所有安装都会更快,方法是拉出并签出新版本,而不是删除它并下载完整的ZIP。这些是
--prefere dist
--prefere source
中多余的es吗?
composer update --prefer-source