我正在尝试理解这一部分:http://getcomposer.org/doc/02-libraries.md#lock-file
此锁定文件不会对依赖它的其他项目产生任何影响。它只对主项目“
产生影响
这是否意味着如果项目P依赖于库A,而库A依赖于库B v1.3,项目P将不关心库B的版本,并且可能会安装B 1.4而不是?那有什么意义呢?
或者它是否意味着相反,正如人们对依赖管理器所期望的那样?
答案 0 :(得分:63)
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
中的依赖关系信息非常重要。
答案 1 :(得分:37)
composer.lock
记录已安装的确切版本。因此,您与同事的版本相同。
作曲家安装
composer.lock
档案composer.lock
文件(使用composer update
)composer.lock
文件作曲家更新
composer.json
文件composer.lock
文件所以在一个简单的检查清单中。
如果您想让所有同事保持与您相同的版本......
composer.lock
提交给GIT(或您拥有的vcs)composer.lock
档案composer install
来获取正确的依赖关系如果要将系统依赖关系升级到新版本
composer update
composer.lock
文件的最新版本composer install
以下将是一个非常好的阅读
https://blog.engineyard.com/2014/composer-its-all-about-the-lock-file
享受composer.lock
档的力量!
答案 2 :(得分:3)
锁定文件的目的是记录安装的确切版本,以便重新安装。这意味着,如果您的版本规范为1. *并且您的同事运行安装1.2.4的composer update
,然后提交composer.lock文件,那么当您composer install
时,您也将获得1.2.4,即使1.3.0已经发布。这确保了在项目上工作的每个人都具有相同的确切版本。点击此处Composer: It’s All About the Lock File