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

问题描述 投票:0回答:4

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

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

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

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

php dependency-management package-managers composer-php
4个回答
134
投票

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
文件的力量!


88
投票

Composer 依赖项在

composer.json
中定义。当第一次运行composer install 或运行composer update 时,将创建一个名为
composer.lock
的锁定文件。 1

引用的文档仅指锁定文件。如果您的项目 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

composer.lock
默认情况下创建,因为
lock
配置选项
[ref]
true
。将选项设置为
false
Composer 将不会创建或读取
composer.lock
文件。


7
投票

锁定文件的目的是记录已安装的确切版本,以便可以重新安装它们。这意味着,如果您的版本规范为 1.* 并且您的同事运行安装 1.2.4 的

composer update
,然后提交composer.lock 文件,那么当您
composer install
时,您也将获得 1.2.4 ,即使 1.3.0 已经发布。这可以确保参与该项目的每个人都拥有相同的确切版本。在此处阅读更多内容Composer:这都是关于锁定文件的


0
投票

奔跑

compose init

它会解决你的问题

© www.soinside.com 2019 - 2024. All rights reserved.