如何在没有任何结果HTTP调用的情况下运行composer update?

时间:2017-12-03 06:34:45

标签: php composer-php

我想知道是否有办法在没有查询packagist.org的情况下使用composer update来获取所有包裹。

我的问题是,当我更新本地composer.json时,我必须运行composer update,因为我只是在运行composer install时收到这样的消息:

  

警告:锁定文件与composer.json中的最新更改不是最新的。您可能会过时的依赖项。运行更新以更新它们。

所以我想要的只是更新依赖项,然后从缓存中获取任何所需的依赖项。我认为检查更新版本的http调用会导致巨大的减速。

1 个答案:

答案 0 :(得分:1)

运行点

$ composer update

更新通过composer.json所需的所有依赖项。为了确定是否需要更新任何依赖项,composer连接到https://packagist.org(中央程序包元数据存储库),以查询当前所需的任何程序包是否在与之匹配的较新版本中可用各自的版本限制。

您可以通过配置禁用Packagist:

{
    "repositories": [
        {
            "packagist.org": false
        }
    ]
}

或者,您可以使用私有Packagist或Satis来加速该过程。

一般来说,我鼓励使用

$ composer install

安装composer.lock中锁定的依赖项,或运行

$ composer require foo/bar:^x.y.z —update-with-dependencies 

或运行

$ composer remove foo/bar

添加,更新和删除软件包,而不是编辑composer.json然后运行

$ composer update

一次更新所有包具有以下缺点

  • 它没有明确记录所需包的实际最低版本应该是什么
  • 它可能会带来重大变化,并且取决于您是否有足够的测试覆盖率,您可能很难找到导致问题的原因

一次将更新限制为一个,可以更轻松地查找问题。此外,没有充分理由一次更新每个依赖项(除非您想要了解应用程序或库是否与持续集成环境中的最新依赖项一起使用)。通常,您希望更新单个依赖项(或一小组依赖项)以便

  • 提供修复错误的更新
  • 引入提供您打算使用的特定功能的更新

供参考,见