Composer-使用包依赖项的自定义派生

时间:2019-04-16 12:57:40

标签: composer-php

我正在使用软件包teamtnt/laravel-scout-tntsearch-driver,并且希望对teamtnt/tntsearch中的其中一个文件进行很小的更改,这是软件包的依赖项之一。

通常,我会:

  1. 创建包裹的叉子。
  2. 如下所示将存储库添加到我的composer.json中:
  "repositories": [
    {"type": "vcs", "url": "https://github.com/user/packagefork"}
  ],
  1. 需要/将软件包升级到正确的版本(通常是dev-master),并保持原始名称间距,并且一切正常。

但是,对于没有直接包含在我的composer.json文件中的依赖项,这似乎不起作用。即使我不需要在基本包中进行任何更改,我是否也需要派生基本包和依赖包?

我希望有一种简单的方法来执行此操作,而不必分叉每个级别。

1 个答案:

答案 0 :(得分:1)

这实际上很简单。不太清楚为什么它最初不起作用!以下说明适用于任何想知道的人:

  1. 分叉软件包(即GitHub)
  2. 如下所示,将用户名中的存储库添加到项目的主composer.json中:
  "repositories": [
    {"type": "vcs", "url": "https://github.com/youruser/tntsearch"}
  ],
  1. 在步骤1中创建的新fork中(您的用户/ tntsearch)编辑composer.json文件,然后创建/添加到Extras键:
    "extra": {
        "branch-alias": {
            "dev-master": "2.0.x-dev"
        }
    }

这有效地允许您安装dev-master版本,但是允许依赖于此的其他软件包请求2.0版本(在这种情况下)。在这种情况下,您确实需要小心,因为您已经分叉了正确的版本,并且以后对所有升级进行了正确的管理,否则事情可能会中断!

有关composer alias here的更多信息

  1. 使用原始软件包名称空间(在dev-master版本中)要求/升级软件包。
composer require teamtnt/tntsearch:dev-master

名称间距和软件包版本将与分支之前相同,但分支中的编辑内容将被拉入您的项目中。