繁体   English   中英

在PHP Composer中阻止程序包安装以使用程序包的分支

[英]Blocking a package install in PHP Composer to use a fork of the package

我正在与Behat和Composer合作开展一个项目。 我不得不为Mink和Mink Selenium 2驱动程序创建一个fork和patch来处理弹出窗口。 目前,管理我分配的回购的人仍在审核补丁。 所以在同一时间我想使用我的fork版本。

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

我可以这样做吗? 我可以阻止包的必需包,而不是我的fork吗?

谢谢!

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

如果您正在为项目使用某个库,并且决定更改库中的某些内容,则需要您的项目使用修补版本。 如果库在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。

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

你应该做的是添加behat / mink的别名。 请参阅composer别名的文档

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM