【问题标题】:Loading dependency over Composer with defined repository in dependency在 Composer 上加载依赖项,并在依赖项中定义了存储库
【发布时间】:2014-08-08 14:17:38
【问题描述】:

我有项目projectAlfa 和我的依赖项my/project-beta。但是my/project-beta 有依赖otherProject 而没有composer.json。所以我在my/project-beta 中定义了类型为package 的存储库。

阿尔法项目 composer.json

{
  "repositories": [
    {
      "type": "git",
      "url": "http://github.com/my/project-Beta"
    }
  ],
  "require": {
    "my/project-beta": "dev-master"
  }
}

项目测试版 composer.json

{
  "name": "my/project-beta",
  "repositories": [
    {
      "type": "package",
      "package": {
        "name": "other/project",
        "version": "dev-master",
        "source": {
          "type": "git",
          "url": "http://github.com/Other/Project",
          "reference": "master"
        }
      }
    }
  ],
  "require": {
    "other/project": "*"
  }
}

问题:

如果我在projectAlfa 上运行composer install,则不会加载依赖项,因为:

my/project-beta dev-master requires other/project * -> no matching package found

【问题讨论】:

    标签: dependencies repository composer-php


    【解决方案1】:

    您有两种可能的解决方案。

    首先,Composer 会忽略不属于您的主项目的核心 composer.json 文件的任何其他存储库。但是,您可以在那里重复所有这些提及,并允许 Composer 然后在没有 composer.json 文件的情况下找到这个第三方依赖项。

    重复您从中获取代码的所有存储库并不是最好的解决方案,但对于小范围来说是一种快速的解决方案。

    第二种解决方案是创建一个本地 Satis 存储库,其中包含来自私有存储库的所有元数据,这些元数据在 packagist.org 上是未知的。您仍然需要手动添加指向此 Satis 存储库 URL 的链接,但这实际上在任何地方都是一样的,如果您在 Satis 中更新某些内容,所有项目都将立即从中受益,而无需更改其中的某些内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-24
      • 1970-01-01
      • 1970-01-01
      • 2021-01-03
      • 2016-03-18
      • 2019-04-27
      • 2020-09-28
      • 2017-03-29
      相关资源
      最近更新 更多