更新JFrog Artifactory中PHP Composer v2的存储库

如果你是近四分之一的使用PHP的专业开发人员之一(根据StackOverflow 2021年的调查),那么Composer的维护者真的希望你从PHP包管理器的v1迁移到v2。

2020年10月24日,Composer 2.0.0发布了有一些重大改进。由于几乎每十个网站中就有八个在某种程度上使用PHP,这是一个影响很大的变化。

Artifactory 7.24的更新帮助您管理此迁移,并支持这两个V1和v2标准PHP库

PHP作曲家V2

据报道,新版本的Composer在解决PHP依赖方面,在速度和内存使用方面提高了50%的性能。其中包括新的v2存储库元数据格式,以及通过API按供应商或类型列出包的能力。

为了鼓励迁移到v2, 2021年5月,packagist,主PHP的作曲家注册表和维护者开始弃用Composer 1。X接受下列制裁:

  • 降低v1元数据API更新速率

新版本的更新速率从每分钟降低到每15分钟一次。这意味着使用Composer 1.x安装新版本需要多花几分钟的时间。

  • 通过v1元数据API限制对未使用包的访问

v1格式使用非常长的文件列表,维护数百万个包会对进程的性能产生影响。为了解决这个问题,packagist将从v1索引中隐藏(在滚动的基础上)过去4个月内没有下载的所有包。

Artifactory中的PHP Composer V2和V1

与大多数PHP开发人员一样,您的团队几乎肯定已经建立了一个大量的专有Composer包库,以及在公共存储库(如packagist)中使用的开源依赖项。

这就是为什么Artifactory使您能够在本地和远程存储库中同时支持v1和v2标准,以帮助您按照自己的节奏管理Composer v2迁移。

首先,所有PHP作曲家存储库在Artifactory 7.24和更新版本中支持这些v2特性:

  1. Composer v2元数据API(本地和远程回购)
  2. 作曲家列表API(本地和远程回购)
  3. Drupal 7和Drupal 8注册中心支持远程存储库

这有助于确保您在Artifactory中的远程存储库将继续与packagist一起工作,因为他们继续鼓励逐步淘汰v1。

配置Artifactory Composer Repo

如果您需要它们,您的任何本地Artifactory回购也可以支持Composer v1操作,为v1和v2维护索引。

一旦您将Artifactory实例更新到7.24或更新版本,所有现有的本地Composer存储库都将得到支持这两个默认为V1和v2。这有助于确保您的团队在向v2迁移时可以继续使用Composer v1。

但是,您创建的任何新的本地Composer存储库都将得到支持只有默认v2。

启用/禁用作曲家v1

我们在PHP repo配置中添加了一个选项来启用/禁用Composer v1索引。

在Artifactory中设置PHP Composer存储库

因此,如果默认配置不是您的首选,您可以更改它们。当您的团队完全迁移到v2时,您也可以在存储库中取消对v1的支持。

可以在回购配置中随时启用/禁用v1索引。但是,您还必须执行存储库的重索引才能使此更改生效。控件中的存储库可以进行调用工件树和选择重新计算指数

重新索引PHP Composer存储库

作曲家库结构

当您的回购启用了Composer v1索引(并且已经计算了它的索引),Artifactory将维护两个索引集,对于v1 (p)和v2 (p2).通过这种方式,同时支持Composer v1和v2操作。

PHP Composer v1和v2

您可以将本地存储库设置为‘配置’中Composer命令行的默认存储库。json '文件,使用陷害我

{" repositories ": [{"type": "composer", "url": "https://localhost:8081/artifactory/api/composer/php-local"} {" packagist ": false}]}

您可以使用Artifactory api来获取检索元数据和列出包名所需的url。

得到artifactory / api /作曲家/ php-local / packages.json

例如,上面的命令可能会产生以下响应:

{"搜索":" https://localhost: 8081 / artifactory / api /作曲家/ php-local / search.json吗?q = % % +类型= %查询类型%”、“providers-lazy-url”:“https://localhost: 8081 / artifactory / api /作曲家/ php-local / p / % %包。json”、“metadata-url:“https://localhost: 8081 / artifactory / api /作曲家/ php-local / p2 / %包。json”、“列表”:“https://localhost: 8081 / artifactory / api /作曲家/ php-local /包/列表。json "}

使用' metadata-url ',你可以检索一个包的v2元数据:

得到artifactory / api /作曲家/ php-local / p2 /独白/ monolog.json

保持PHP编写器的最新状态

这些对PHP Composer至关重要的更新只是我们持续努力的最新成果,以帮助您的包管理服务跟上Artifactory的步伐。通过这些改进,您可以使PHP Composer包按照您自己的节奏与v2兼容,同时立即保持依赖项的远程存储库的可操作性和性能。

即将发布的版本还将允许您创建PHP Composer虚拟存储库,将您的本地、远程和其他虚拟Composer v2存储库组合成一个由单个逻辑URL访问的集合。

这些都是将Artifactory安装更新到最新版本的有力理由。如果你没有给出JFrog DevOps平台一试,开始免费