使用定义的存储库依赖于Composer加载依赖关系

时间:2014-06-18 10:15:58

标签: dependencies repository composer-php

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

Project Alfa 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": "*"
  }
}

问题:

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

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

1 个答案:

答案 0 :(得分:0)

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

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

重复从中获取代码的所有存储库不是最佳解决方案,而是针对小范围的快速解决方案。

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