【问题标题】:Composer - Using a custom fork of a package dependencyComposer - 使用包依赖的自定义分支
【发布时间】:2019-04-16 21:32:59
【问题描述】:

我正在使用包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 文件中的依赖项,这似乎不起作用。即使我不需要更改基础包中的任何内容,我是否需要同时分叉基础包和依赖包?

我希望有一种简单的方法可以做到这一点,而不必分叉每个级别。

【问题讨论】:

    标签: composer-php


    【解决方案1】:

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

    1. fork 包(即 GitHub)
    2. 将您的用户名中的 repo 添加到您的项目 main composer.json 中,如下所示:
      "repositories": [
        {"type": "vcs", "url": "https://github.com/youruser/tntsearch"}
      ],
    
    1. 在您在第 1 步中创建的新分支 (youruser/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
    

    名称间距和包版本将与您的 fork 之前保持相同,但您的 fork 中的编辑将被拉入您的项目中。

    【讨论】:

      猜你喜欢
      • 2021-06-27
      • 2020-09-08
      • 1970-01-01
      • 1970-01-01
      • 2013-11-09
      • 1970-01-01
      • 1970-01-01
      • 2017-06-28
      • 1970-01-01
      相关资源
      最近更新 更多