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

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

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

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

还是意味着相反,正如人们所期望的从属经理?

Composer依赖关系在composer.json中定义。 首次运行composer php安装时,或运行composer php更新时,将创build一个名为composer.lock的锁文件。

引用的文档仅涉及锁文件。 如果你的项目P依赖于库A和A依赖于B v1.3 ***,那么如果A包含一个locking文件,说有人运行了“作曲者更新”,导致B v1.3.2被安装,那么在你的项目中安装A P仍然可以安装1.3.3,因为composer.json (不是.lock !)将依赖关系定义为1.3。*。

locking文件始终包含确切的版本号,并且可用于将您testing的版本传送给同事或发布应用程序。 对于库, composer.json的依赖信息是重要的。

composer.locklogging安装的确切版本。 所以你和你的同事在同一个版本。

composer php安装

  • 检查composer.lock文件
  • 如果没有,自动生成composer.lock文件(使用composer update
  • 安装logging在composer.lock文件中的指定版本

composer php更新

  • 浏览一下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文件的力量!

locking文件的目的是logging所安装的确切版本,以便可以重新安装。 这意味着如果你有一个版本规格为1. *,你的同事运行安装了1.2.4的composer update ,然后提交composer.lock文件,那么当你composer install ,你也会得到1.2.4,甚至如果1.3.0已经发布。 这确保在项目上工作的每个人都有相同的确切版本。在这里阅读更多composer php:这是所有关于locking文件