ChatGPT解决这个技术问题 Extra ChatGPT

composer.lock:它是如何工作的?

我试图理解这部分:http://getcomposer.org/doc/02-libraries.md#lock-file

这个锁文件不会对其他依赖它的项目产生任何影响。只对主项目有影响”

这是否意味着如果项目 P 依赖于库 A,而库 A 依赖于库 B v1.3,则项目 P 不会关心库 B 的版本,而可能会安装 B 1.4?那有什么意义呢?

或者它是否意味着相反的意思,正如人们对依赖管理器所期望的那样?


u
user101289

composer.lock 记录已安装的确切版本。这样您就可以与您的同事处于相同的版本中。

作曲家安装

检查 composer.lock 文件

如果没有,自动生成 composer.lock 文件(使用 composer update)

安装 composer.lock 文件中记录的指定版本

作曲家更新

浏览 composer.json 文件

根据提到的版本标准(例如 1.12.*)检查更新(最新)版本的可用性

安装最新的可能(根据上述)版本

使用已安装的版本更新 composer.lock 文件

所以在一个简单的清单中。

如果您想让所有同事都使用与您相同的版本...

将您的 composer.lock 提交给 GIT(或您拥有的 vcs)

要求其他人获取该版本的 composer.lock 文件

始终使用 composer install 来获取正确的依赖项

如果要将系统依赖升级到新版本

检查 composer.json 文件以获取版本规范。

做作曲家更新

这将使用最新版本更改 composer.lock 文件

将其提交到 GIT(或 vcs)

让其他人得到它并作曲家安装

以下将是一个很好的阅读
https://blog.engineyard.com/2014/composer-its-all-about-the-lock-file

享受 composer.lock 文件的强大功能!


我还想指出,composer install 有时在已经安装时无法获得您想要的版本,作为一种解决方法,他们必须删除供应商文件夹并再次安装 composer 才能在 composer.json 中获得正确的版本。锁。例如,在 composer 安装后,我从供应商那里获得 4.0.1 而不是 4.0.14-beta,我删除了供应商,然后再次 composer install 然后我得到了正确的版本 4.0.14-beta
3
3 revs, 3 users 67%

Composer 依赖项在 composer.json 中定义。首次运行 composer install 或运行 composer update 时,将创建一个名为 composer.lock 的锁定文件。

引用的文档仅指锁定文件。如果您的项目 P 依赖于库 A 并且 A 依赖于 B v1.3.***,那么如果 A 包含一个锁定文件,说明有人运行“composer update”导致安装了 B v1.3.2,那么在您的项目中安装 A P 可能仍会安装 1.3.3,因为 composer.json(不是 .lock!)将依赖项定义为 1.3.*。

锁定文件始终包含准确的版本号,并且对于将您测试的版本传达给同事或发布应用程序时很有用。对于库,composer.json 中的依赖关系信息才是最重要的。


如何将所有依赖项更新为锁定文件中指定的内容(例如将项目从暂存转移到实时)?
只需运行 composer.phar install - 它将所有内容安装/更新/删除到锁定文件的状态
在 Python 和 Ruby 中,有一个类似的概念,涉及 Gemfile.lock 和 requirements.txt。请参阅:caremad.io/blog/setup-vs-requirementyehudakatz.com/2010/12/16/… 这是否意味着对于 PHP“库”,不需要保留 composer.lock。但是对于 PHP“应用程序”,应该提交 composer.lock 吗?
composer.lock 文件也可以对库有益。不是针对依赖库的任何人,而是针对与库的开发人员交流他们安装了哪些版本来运行测试或调试问题的人,它还可以帮助澄清 CI 系统为库运行测试的依赖项版本。
composer.lock 就像 composer.json 文件的元数据
S
Shahzaib Hayat Khan

锁定文件的重点是记录已安装的确切版本,以便重新安装它们。这意味着如果您的版本规范为 1.* 并且您的同事运行 composer update 安装 1.2.4,然后提交 composer.lock 文件,当您 composer install 时,您还将获得 1.2.4 ,即使 1.3.0 已经发布。这可确保从事该项目的每个人都拥有相同的确切版本。在此处阅读更多信息 Composer: It’s All About the Lock File