Git 作曲家赢得';在私有存储库中加载私有存储库?
因此,我试图利用composer软件包的强大功能,使我的应用程序更加模块化。因此,我的主要应用程序现在依赖于一个私有存储库,我正在这样做:Git 作曲家赢得';在私有存储库中加载私有存储库?,git,composer-php,Git,Composer Php,因此,我试图利用composer软件包的强大功能,使我的应用程序更加模块化。因此,我的主要应用程序现在依赖于一个私有存储库,我正在这样做: "repositories": [ { "type": "vcs", "url": "../tenant-package.git" } ], "require": { "archiveonline/tenant-package": "dev-master#a9ee4ec" }, 这很好,它在本地拉入租
"repositories": [
{
"type": "vcs",
"url": "../tenant-package.git"
}
],
"require": {
"archiveonline/tenant-package": "dev-master#a9ee4ec"
},
这很好,它在本地拉入租户包
,如果我将url更新为bitbucket url,它仍然可以正常工作。现在,tenant包
有另一个名为repository包
的私有依赖项,我在tenant包
中提取它,如下所示:
"repositories": [
{
"type": "vcs",
"url": "https://rohan0793@bitbucket.org/archiveonline/repository-package.git"
}
],
"require": {
"archiveonline/repository-package": "dev-master#e4ce518"
},
现在,当我在
租户包
中执行composer更新
时,我可以查看供应商目录以查找archiveonline/repository包
。同样,当我在主应用程序中执行composer更新时
,我可以在供应商目录中找到archiveonline/tenant包
,但找不到archiveonline/repository包
。我做错了什么?我错过什么了吗?这不是解决问题的方法吗?在决定哪些软件包可用之前,Composer必须了解所有可能的存储库。默认情况下,只有packagist.org在列表中,并且知道所有公开发布的包
如果要添加单个存储库,必须将它们全部添加到根包中。您不能间接使用根包中所需的包中提到的存储库
Composer将扫描所有存储库以获取任何包含的包的信息,但如果它允许间接的包链接,则如果包指向一长串其他包(如果包含在您使用的公共包中,则这是一种非常恶劣的拒绝服务),则此搜索可能永远不会结束,或者它将递归地继续查找新的存储库,并与其他存储库建立新的链接,等等
设计决定只使用根包composer.json
的存储库知识,因此必须提及所有Git回购
正如你所能想象的,这是乏味的,所以有一些帮助:Satis。您可以将其配置为了解您的所有存储库,它将收集在一个位置找到的所有元数据。运行它会创建一些必须通过HTTP或HTTPS提供服务的静态文件,您可以在所有composer.json
文件中使用“type”:“composer”,“url”:http://example.com/your/satis/path“
无论何时添加新包或新包的新版本,在Satis更新元数据文件后,Composer都会知道这些文件,并允许在最新(无冲突)版本的任何位置添加任何包。我认为这是有意义的。谢谢