【问题标题】:Discover latest versions of Composer packages when dependencies are locked锁定依赖项时发现最新版本的 Composer 包
【发布时间】:2015-07-28 09:53:04
【问题描述】:

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

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

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

有没有一种使用 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 无论如何都不会有所不同)。

【问题讨论】:

    标签: php composer-php dependency-management


    【解决方案1】:

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

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

    【讨论】:

    • 我更关心向我展示的较新版本,因此我可以知道要手动更新的依赖项。提交 composer.lock 并不是真正的解决方案,因为这不会告诉我要更新什么(而且我的 composer.json 被锁定在特定版本,所以 composer.lock 无论如何都不会有所不同)。
    【解决方案2】:

    这与您的建议不完全一致。但是你可以运行

    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】:

      正如其他人所说,composer 做你告诉它的事情,并且只会install .lock 文件中指定的版本,或update 到新版本(在给定版本的范围内指定) .

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

      【讨论】:

        【解决方案4】:

        要显示最新版本的软件包,请使用 show-l/--latest 参数,例如

        composer show -l
        

        -l, --latest 显示最新版本


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

        composer show -t
        

        -t, --tree 将依赖关系列为树


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

        composer show -a zendframework/zendframework
        

        注意:将 zendframework/zendframework 更改为您的包名称。


        注意事项:

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

        【讨论】:

          【解决方案5】:

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

          composer outdated
          

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2012-05-09
            • 2017-08-06
            • 1970-01-01
            • 2021-09-26
            • 2017-05-03
            • 2016-12-05
            • 2021-06-05
            相关资源
            最近更新 更多