我有两个代码库。它们都有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"
},
答案 0 :(得分:1)
如果您使用主包的依赖关系的composer.json
中提到的私有存储库,则必须在那里重复它们。
或者,您可以设置Satis实例,以便从您使用的所有私有存储库中创建必要的元数据,并简单地将其链接起来。
Composer不会递归扫描存储库以获取到其他存储库的进一步链接,因为这会导致无限的扫描时间和非常糟糕的性能,并最终导致不可判定的问题,因此无论您使用什么包,只能使用Packagist作为一个源,或者必须提及应该覆盖或添加到Packagist的所有包的源。
让一个单独的Satis实例作为所有私有存储库的完整映射,将真正简化该过程。