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

Hap*_*per 59 php package-managers dependency-management composer-php

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

此锁定文件不会对依赖它的其他项目产生任何影响.它只对主项目产生影响"

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

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

nad*_*man 66

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 - 它会安装/更新/删除锁定文件状态的所有内容 (4认同)

Dil*_*nga 49

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 update
  • 这将composer.lock使用最新版本更改文件
  • 将它提交给GIT(或vcs)
  • 要求其他人得到它 composer install

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

享受composer.lock文件的力量!


小智 5

锁定文件的目的是记录已安装的确切版本,以便可以重新安装。这意味着,如果您的版本规范为 1.* 并且您的同事运行composer update安装了 1.2.4,然后提交了 composer.lock 文件,那么当您composer install使用 1.3.0时,您也将获得 1.2.4已被释放。这可确保参与该项目的每个人都拥有完全相同的版本。在此处阅读更多内容Composer:这就是锁定文件的全部内容