在依赖关系被锁定时发现最新版本的Composer包

时间:2015-05-16 14:44:14

标签: php composer-php dependency-management

假设我有一个带有锁定依赖项的composer.json文件:

{
  "require" : {
   "zendframework/zendframework" : "2.4.2"
  },
  "require-dev": {
    "phpunit/phpunit": "4.6.6"
  }
}

我想这样做是因为想要手动更新依赖项,所以我不会遇到构建失败或其他开发人员遇到我没有的问题的情况,因为Composer安装了不同版本的软件包。 / p>

是否有一种很好的方法可以使用Composer列出锁定包的所有较新版本,可能是composer discover,我得到输出:zendframework/zendframework被锁定在版本2.4.2(或2.4.*或其他),但有2.5.0,2.5.1和2.6.0版本*?

是否有任何现有命令能够提供这种信息?

基本上,我更关注向我展示的较新版本,因此我可以知道手动更新的依赖项。提交composer.lock并不是真正的解决方案,因为这不会告诉我要更新的内容(我的composer.json已锁定在特定版本,因此composer.lock无论如何都不会有所不同。

5 个答案:

答案 0 :(得分:1)

为了做你想做的事,提交composer.lock文件并确保每个人都运行composer install来安装deps。这样,每个人都拥有与每个包完全相同的版本/提交。

然后,您可以运行composer update以获取更新版本。这将更新包和您可以提交和推送的composer.lock文件,以便每个人都有相同的版本(在他们运行composer install之后)。

答案 1 :(得分:1)

最简单的方法可能只是运行:

composer outdated

并获取过时依赖项的列表。输出看起来大致如下:

enter image description here

答案 2 :(得分:0)

这不完全是你的建议。但你可以运行

composer update --dry-run

看看当composer更新你的依赖项时会发生什么。这只显示了一个软件包可以更新到的最新版本,但不是它们之间的版本:

composer update --dry-run
Loading composer repositories with package information
Updating dependencies (including require-dev)
  - Updating symfony/translation (v2.5.5) to symfony/translation (v2.5.11)

  - Updating symfony/security-core (v2.5.5) to symfony/security-core (v2.5.11)

  - Updating symfony/routing (v2.5.5) to symfony/routing (v2.5.11)

  - Updating symfony/process (v2.5.5) to symfony/process (v2.5.11)

  - Updating symfony/http-foundation (v2.5.5) to symfony/http-foundation (v2.5.11)

答案 3 :(得分:0)

正如其他人所说的那样,作曲家按照你的说法做了,只会{。}}从.lock文件中指定的版本,或install到新版本(在指定的范围内)给定的版本。)

有一些外部网站服务可以让您知道软件包已经更新 - 例如Versioneye.com。您可以关注许多软件包,它会在任何软件包更新时通知您,因此您可以根据需要更新编写器文件。

答案 4 :(得分:0)

要显示最新版本的软件包,请使用带有;WITH XMLNAMESPACES ('http://schemas.microsoft.com/sqlserver/reporting/2010/01/reportdefinition' as rdl10) SELECT ct.Path as ReportPath, T1.dataset.value('./@Name','nvarchar(max)') DatasetName, T1.dataset.value('(.//rdl10:CommandText)[1]','nvarchar(max)') as DatasetQuery, T1.dataset.value('(.//rdl10:DataSourceName)[1]','nvarchar(max)') as DataSourceName ,t.DSR FROM catalogtemp ct CROSS APPLY xmlColumn.nodes('//rdl10:DataSet') T1(dataset) JOIN (SELECT Path, T2.dsrc.value('(./@Name)[1]', 'nvarchar(max)') as DSName, T2.dsrc.value('(.//rdl10:DataSourceReference)[1]', 'nvarchar(max)') as DSR FROM catalogtemp CROSS APPLY xmlColumn.nodes('//rdl10:DataSource') T2(dsrc)) t ON t.Path = ct.Path AND t.DSName = T1.dataset.value('(.//rdl10:DataSourceName)[1]','nvarchar(max)') WHERE ct.Path = 'my report' GO / show参数的-l,例如

--latest
  

composer show -l -l显示最新版本

要查看依赖树,请使用--latest / -t参数,例如

--tree
  

composer show -t -t将依赖项列为树

要列出给定包的所有可用版本,请运行:

--tree

注意:使用您的包名更改composer show -a zendframework/zendframework

注意:

  • 对于全局,请在zendframework/zendframework之后添加global
  • 如需帮助,请运行:composer