加载两个自定义库

时间:2019-01-31 14:14:49

标签: php composer-php

使用Composer从另一个自定义库中加载自定义库时,我遇到了一些问题


我有2个自定义库,分别称为“ ia / audit_trail”和“ ia / flash”。而且“ ia / audit_trail”需要“ ia / flash”才能工作。

  

audit_trail:https://github.com/pierrererot/audit_trail

     

flash:https://github.com/pierrererot/flash

因此,我设置了require属性来调用另一个属性。没什么特别的,但是,当我在主项目中运行一个简单的composer update -vvv时,就会出现此错误:

  

您的要求无法解决为一组可安装的软件包。
   问题1
     -ia / audit_trail_component [1.0.0]可满足ia / audit_trail_component〜1.0.0的安装请求。
     -ia / audit_trail_component 1.0.0要求ia / flash_component〜1.0.0->找不到匹配的软件包。

     

潜在原因:
  -包裹名称中有错字
  -根据您的最低稳定性设置,该软件包没有足够稳定的版本
    有关更多详细信息,请参见https://getcomposer.org/doc/04-schema.md#minimum-stability
  -这是一个私人软件包,您忘了添加自定义存储库来找到它

     

阅读https://getcomposer.org/doc/articles/troubleshooting.md了解更多常见问题...

但是,如果我将这两个库直接放入我的主项目中(因此,如果一个库不需要另一个库),它就可以工作!


这是我主要项目的composer.json

{
    "require": {
        "ia/audit_trail_component": "1.0.0"
    },
    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/pierrererot/audit_trail.git"
        }
    ]
}

好的。因此,我确实需要自定义的“ audit_trail”库。现在,这是我的自定义“ audit_trail”库的composer.json

{
    "name": "ia/audit_trail_component",
    "version": "1.0.0",
    "type": "library",
    "require": {
        "ia/flash_component": "1.0.0"
    },
    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/pierrererot/flash.git"
        }
    ],
    "minimum-stability": "dev"
}

好的。因此,我确实需要自定义的“ Flash”库。然后,这是我的自定义“ Flash”库的composer.json

{
    "name": "ia/flash_component",
    "version": "1.0.0",
    "description": "Flash Component",
    "type": "library",
    "minimum-stability": "dev"
}

如您所见,在作曲家文件中一切似乎都正常,所以我不明白自己错过了什么。

==>请问有人有线索吗?

在您问之前,我先弄清楚了这些事情:

  • 两个库在其Git存储库上都有一个“ dev”和一个“ master”分支

  • 两个库都在其Git存储库上至少推送了1.0.0标签

1 个答案:

答案 0 :(得分:2)

repositories设置仅是root用户-Composer将忽略所有依赖项的此设置,仅使用在主项目中定义的这些存储库。

  

存储库仅可用于根软件包,并且不会加载依赖项中定义的存储库。如果您想了解原因,请阅读FAQ entry

     

https://getcomposer.org/doc/05-repositories.md#repository

因此,您需要将所有必要的存储库添加到主项目的composer.json中:

"repositories": [
    {
        "type": "vcs",
        "url": "https://github.com/pierrererot/audit_trail.git"
    },
    {
        "type": "vcs",
        "url": "https://github.com/pierrererot/flash.git"
    }
],