JFrogChina
作者JFrogChina·2021-10-25 15:28
DevOps领域专家·JFrog

如何平滑迁移到PHP Composer v2

字数 2080阅读 552评论 0赞 0

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

2020 年 10 月 24 日,Composer 2.0.0 发布并进行了一些重大改进。由于互联网上几乎每十个网站中就有八个以某种方式使用 PHP,这是一个具有重大影响的变化。

Artifactory 7.24 的更新可帮助您管理此迁移,并支持所有 PHP 存储库中的 v1 和 v2 标准。

PHP Composer V2

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

为了鼓励迁移到 v2,2021 年 5 月,主要 PHP Composer 注册中心和维护者 packagist 开始弃用 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 迁移

首先,Artifactory 7.24 及更高版本中的所有 PHP Composer 存储库都支持这些 v2 功能:

  1. Composer v2 元数据 API(本地和远程存储库)
  2. Composer List API(本地和远程存储库)
  3. Drupal 7 和 Drupal 8 注册表支持远程存储库

    这有助于确保 Artifactory 中的远程存储库将继续与 packagist 一起运行,因为它们继续鼓励淘汰 v1。

配置 Artifactory Composer 存储库

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

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

但是,您创建的任何新本地 Composer 存储库默认仅支持 v2。

启用/禁用 Composer v1

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

因此,如果默认配置不是您的偏好,您可以更改它们。随着您的团队完全迁移到 v2,您还可以在您的存储库中停止对 v1 的支持。

可以随时在 repo 配置中启用/禁用 v1 索引。但是,您还必须执行存储库的重新索引以使此更改生效。这可以通过右键单击工件树中的存储库并选择重新计算索引来调用。

Composer 存储库结构

当您的 repo 启用 Composer v1 索引(并且其索引已计算),Artifactory 将维护两个索引集,分别为 v1 (p) 和 v2 (p2)。这样,Composer v1 和 v2 操作都得到支持。

您可以使用 Set Me Up 中显示的 URL 将本地存储库设置为 config.json 文件中 Composer 命令行的默认存储库:

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

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

使用 metadata-url,您可以检索包的 v2 元数据:

使 PHP Composer 保持最新状态

PHP Composer 的这些重要更新只是我们不断努力帮助您保持 Artifactory 中的包管理服务最新的最新进展。 通过这些改进,您可以按照自己的节奏使 PHP Composer 包符合 v2,同时立即使您的远程存储库的依赖项 packagist 保持可操作性和高性能。

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

这些都是将 Artifactory 安装更新到最新版本的充分理由。 如果您还没有尝试过JFrog DevOps平台,请免费开始!

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

0

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

X社区推广