【问题标题】:Blocking a package install in PHP Composer to use a fork of the package阻止在 PHP Composer 中安装包以使用包的分支
【发布时间】:2013-07-06 02:19:04
【问题描述】:

我正在与 Behat 和 Composer 合作开展一个项目。我必须为 Mink 和 Mink Selenium 2 驱动程序创建一个分支和补丁来处理弹出窗口。目前,管理我分叉的存储库的人员仍在审查这些补丁。所以与此同时,我想使用我的 fork 版本。

我已将我的存储库添加到作曲家,它们正在被拉入。但是“behat/mink”软件包仍在安装中,因为“behat/mink-extension”需要它。问题是它也可以使用我的 fork。所以我想让它只拉入我的而不是“behat/mink”包。

我可以这样做吗?我可以阻止一个包的必需包以支持我的分叉吗?

谢谢!

【问题讨论】:

    标签: php github composer-php behat mink


    【解决方案1】:

    您无法真正阻止它们。您也许可以禁用从 packagist.org 获取信息,但这会影响所有包。

    您应该为 behat/mink 添加一个别名。见the documentation of composer aliases

    尽量避免分支别名,使用内联别名。

    【讨论】:

      【解决方案2】:

      是的,您需要做的就是将您的 fork 列为要使用的存储库,Composer 将自动包含该 fork,而不是原始包。 From the documentation

      如果您正在为您的项目使用某个库并且您决定 更改库中的某些内容,您将希望您的项目使用 补丁版本。如果库在 GitHub 上(大多数情况下都是这样) 时间),您可以简单地将其 fork 并将您的更改推送到您的 叉。之后,您更新项目的 composer.json。你所拥有的一切 要做的是将您的 fork 添加为存储库并更新版本 约束指向您的自定义分支。

      某人修补了 Monolog 的示例。然后他们告诉 Composer 使用他们的存储库。

      {
          "repositories": [
              {
                  "type": "vcs",
                  "url": "https://github.com/igorw/monolog"
              }
          ],
          "require": {
              "monolog/monolog": "dev-bugfix"
          }
      }
      

      Composer 将扫描 https://github.com/igorw/monolog 中的所有可用版本,并优先使用它们而不是 Packagist 上可用的 Monolog 版本。

      您还可以告诉 Composer 使用本地目录而不是 HTTP 地址。

      "repositories": [
              {
                  "type": "vcs",
                  "url": "/documents/project/igorw/monolog"
              }
          ],
      

      这允许您开发库,在另一个项目中使用它并对其进行测试,而无需在每次编辑和测试之间推送到 Github。

      【讨论】:

      猜你喜欢
      • 2021-06-05
      • 2012-10-11
      • 1970-01-01
      • 1970-01-01
      • 2018-12-05
      • 2019-05-08
      • 1970-01-01
      • 1970-01-01
      • 2021-05-25
      相关资源
      最近更新 更多