Composer php 什么';composer.lock和installed.json之间的区别是什么?

Composer php 什么';composer.lock和installed.json之间的区别是什么?,composer-php,Composer Php,我知道composer.lock是用来确定已安装依赖项的确切版本的。但是vendor/composer/installed.json文件有什么用途呢 两者都包含JSON,并且都是自动生成的。composer.lock是在首次安装或更新时生成的。它包含对所使用的确切版本的引用。应该将其提交到版本跟踪存储库中,以允许还原库的精确组合 installed.json是Composer的内部文件。当您从composer.json手动删除包以从供应商目录中删除文件时,会使用此选项。否则,旧的供应商软件包将永

我知道
composer.lock
是用来确定已安装依赖项的确切版本的。但是
vendor/composer/installed.json
文件有什么用途呢


两者都包含JSON,并且都是自动生成的。

composer.lock
是在首次安装或更新时生成的。它包含对所使用的确切版本的引用。应该将其提交到版本跟踪存储库中,以允许还原库的精确组合


installed.json
是Composer的内部文件。当您从
composer.json
手动删除包以从供应商目录中删除文件时,会使用此选项。否则,旧的供应商软件包将永远存在。

已安装。Composer似乎将json
用作内部存储库,以跟踪供应商目录中实际安装的内容

我已经读过
composer.lock
应该安装的,也是
安装的。json
安装的。这在没有供应商目录的composer.lock文件有效的情况下有一定的意义。您运行
composer install
,它将安装列出的包int
composer.lock
,并将它们写入
installed.json


Composer codebase将
installed.json
视为本地存储库。内容被加载到类型为
InstalledRepositoryInterface
的变量中,该变量名为
localRepository

,我问这个问题的原因正是因为我正在处理一个项目,其中
vendor/
目录处于版本控制之下,我在此不赘述。在这种情况下,将其与其他内容一起提交似乎是明智的。一个非常有效的原因是部署过程目前不允许独立获取依赖项。但即使在这种情况下,我也不会去碰供应商内部的任何东西,仅在安装/更新后按原样提交。是否应推送installed.json?当installed.json被删除时,是否会出现任何问题?当手动从
Composer.json
中删除包时,Composer不能简单地引用
Composer.lock
而不是
installed.json