如何在所需的包中使用Composer存储库?

时间:2014-04-20 22:26:56

标签: php composer-php repository

我有两个代码库。它们都有composer.json个文件(见下文)。第二个composer.json文件的第一个required文件为composer.json,前者远程存储在bitbucket上。

我在本地运行了两个composer.json文件:第一个文件按照我的预期传递和下载供应商;调用第一个文件的第二个文件没有,我收到此错误:

Problem 1
- The requested package timeago/timeago could not be found in any version, there may be a typo in the package name.
Problem 2
- The requested package prettify/prettify could not be found in any version, there may be a typo in the package name.

现在,如果我从第一个文件中移除所有存储库,并删除requires中的相应条目,则所有存储库都按预期工作,并下载文件。所以,我认为问题在于第一个文件中的repositories部分。有什么想法吗?

以下是我的两个作曲家档案:

文件一:

"repositories": {
    "prettify/prettify": {
        "type": "package",
        "package": {
            "name": "prettify",
            "version": "dev-master",
            "source": {
                "url": "http://google-code-prettify.googlecode.com",
                "type": "svn",
                    "reference": "svn/trunk"
            }
        }
    },
    "timeago/timeago": {
        "type": "package",
        "package": {
            "name": "timeago",
            "version": "dev-master",
            "source": {
                "url": "https://github.com/rmm5t/jquery-timeago.git",
                "type": "git",
                    "reference": "master"
            }
        }
    },
    "require": {
        "timeago": "dev-master",
        "prettify": "dev-master",
    }
}

文件二:

"require": {
    "vendor/project": "master"
},

1 个答案:

答案 0 :(得分:1)

如果您使用主包的依赖关系的composer.json中提到的私有存储库,则必须在那里重复它们。

或者,您可以设置Satis实例,以便从您使用的所有私有存储库中创建必要的元数据,并简单地将其链接起来。

Composer不会递归扫描存储库以获取到其他存储库的进一步链接,因为这会导致无限的扫描时间和非常糟糕的性能,并最终导致不可判定的问题,因此无论您使用什么包,只能使用Packagist作为一个源,或者必须提及应该覆盖或添加到Packagist的所有包的源。

让一个单独的Satis实例作为所有私有存储库的完整映射,将真正简化该过程。