2017-12-03 99 views
0

我想知道是否有方法使用composer update没有查询packagist.org所有的软件包。如何在没有任何生成的HTTP调用的情况下运行Composer更新?

我的问题是因为我更新本地composer.json我要运行composer update,因为我得到这样的消息时,只需运行composer install

警告:锁定文件是不是最新的,在最新的变化composer.json。您可能会获得过时的依赖关系。运行更新以更新它们。

所以我想要的只是更新依赖关系,然后从缓存中抓取任何需要的。我相信http调用来检查更新的版本会导致巨大的减速。

+0

有没有很好的理由*编辑*'composer.json'以添加,删除或更新程序包。所有这些都可以通过运行'composer require'或'composer remove'来实现,请参阅https://getcomposer.org/doc/03-cli.md#require和https://getcomposer.org/doc/03-cli .MD#删除。 – localheinz

+0

@localheinz composer.json中还有其他设置,例如本地存储库和自动载入设置。 – Sarke

+0

当然,但如果您阅读我上面的评论,我正在讨论更新,添加和删除软件包的情况。 – localheinz

回答

0

运行

$ composer update 

的一点是更新所有通过composer.json所需的依赖。为了找出是否有任何依赖需要更新,composer连接到https://packagist.org(中央软件包元数据存储库),以查询当前需要的任何软件包是否在与相应版本约束匹配的更新版本中可用。

您可以禁用通过配置使用Packagist:

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

另外,也可以使用私有Packagist或赛帝,以加快这一进程。

一般来说,我会鼓励使用

$ composer install 

安装依赖关系锁定在composer.lock,或运行

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

或运行

$ composer remove foo/bar 

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

$ composer update 

更新所有软件包一次有以下缺点

  • 它并没有明确记录所需的包的实际最低版本应该是什么样
  • 它可以打破的变化可能拉,并根据您是否有足够的测试覆盖率,您可能很难找出造成问题的原因

限制一次更新一个更容易找到问题。此外,没有必要一次更新每个依赖项(除非您想知道应用程序或库是否适用于持续集成环境中的最新依赖项)。通常情况下,要更新以单一依赖(或小的依赖集),以

  • 拉在你打算使用
更新,修复bug在提供特定功能的更新,
  • 作为参考,见

  • 相关问题