我有两个代码存储库。它们都有composer.json
文件(见下文)。第一个composer.json
文件是required
,第二个是composer.json
文件,前者远程存储在比特桶上。
我在本地运行了两个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"
},
如果您使用主包的依赖项的composer.json
中提到的私有存储库,则必须在那里重复它们。
或者,您可以设置一个Satis实例,从您使用的所有私有存储库中创建必要的元数据,只需将其链接即可。
Composer不会递归地扫描存储库以查找到其他存储库的进一步链接,因为这会导致无限的扫描时间和非常糟糕的性能,并最终导致无法确定的问题,所以无论你使用什么包,都必须只使用Packagist作为源,或者必须提及所有应该覆盖或添加到Packagist的包的源。
拥有一个单独的Satis实例,作为所有私人存储库的完整地图,将真正简化这个过程。