3

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

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

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

谢谢!

4

2 回答 2

8

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

如果您正在为您的项目使用某个库并且您决定更改库中的某些内容,您将希望您的项目使用修补版本。如果库在 GitHub 上(大多数情况下都是这种情况),您可以简单地将其 fork 到那里并将您的更改推送到您的 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。

于 2013-07-09T13:40:23.103 回答
1

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

你应该做的是为 behat/mink 添加一个别名。请参阅作曲家别名的文档

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

于 2013-07-08T19:15:27.413 回答