Composer - 在开发中使用依赖项错误

时间:2017-07-14 16:16:42

标签: composer-php

我在composer中有使用path的本地存储库包,它们仍在开发中。问题是,安装它时出错了。

错误讯息:

  

使用包信息装载作曲家​​存储库
  更新依赖项(包括require-dev)
  您的要求无法解析为可安装的软件包。

     

问题1:

     
      
  • 供应商/包B *的安装请求 - >供应商/ packageB [dev-master]可以满足。
  •   
  • vendor / packageB dev-master需要vendor / packageA dev-master - >找不到匹配的包。
  •   
     

潜在原因:

     
      
  • 包名称中的拼写错误
  •   
  • 根据您的最小稳定性设置
  • ,包装不具备足够稳定的版本   

所以要解释一下,请考虑一下。

第一个包,安装名为packageA的依赖项。每件事都按预期工作。 请参阅以下composer.json文件的摘录:

[
    "name": "vendor/packageB",
    "repositories": [
        {
            "type": "path",
            "url": "/vendor/packageA/"
        }
    ],
    "require": {
        "vendor/packageA": "*"
    },
    "minimum-stability": "dev"
]

第二个包,我想安装packageB及其依赖项(在本例中为packageA)。这是在这里它给出了一个错误。 请参阅以下composer.json文件的摘录:

[
    "name": "vendor/packageC",
        "repositories": [
            {
                "type": "path",
                "url": "/vendor/packageB/"
            }
        ],
        "require": {
            "vendor/packageB": "*"
        },
        "minimum-stability": "dev"
]

可能在作曲家中不可能使用本地开发依赖项,目前我不是很清楚。

所以,我的怀疑是,这与某事有关:

  • “最小稳定性”,可能是因为这都是“dev”?
  • 或者因为我使用的是本地软件包(不在packagist或github上)?
  • 或者是别的东西(除了拼写错误:))?

当我放入packageA时,我已经设法安装它,也作为packageB的依赖。这是我发现它有效的唯一方法。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

此问题在作曲家常见问题解答中有所描述。 https://getcomposer.org/doc/faqs/why-can't-composer-load-repositories-recursively.md

在您的情况下,这意味着packageC的composer.json必须包含信息,以便在哪里找到packageA的存储库:

[
"name": "vendor/packageC",
    "repositories": [
        {
            "type": "path",
            "url": "/vendor/packageB/"
        },
        {
            "type": "path",
            "url": "/vendor/packageA/"
        }
    ],
    "require": {
        "vendor/packageB": "*"
    },
    "minimum-stability": "dev"
]