【问题标题】:Composer won't load private repository within private repository?Composer 不会在私有存储库中加载私有存储库?
【发布时间】:2016-05-10 01:34:40
【问题描述】:

所以我正在尝试利用 composer 包的强大功能来使我的应用程序更加模块化。因此,我的主要应用程序现在依赖于我正在拉入的私有存储库,如下所示:

"repositories": [
    {
        "type": "vcs",
        "url": "../tenant-package.git"
    }
],
"require": {
    "archiveonline/tenant-package": "dev-master#a9ee4ec"
},

这很好用,它会在本地拉入tenant-package,如果我将 url 更新为 bitbucket url,它仍然可以正常工作。现在tenant-package 有另一个名为repository-package 的私有依赖项,我将其拉入tenant-package,如下所示:

"repositories": [
    {
        "type": "vcs",
        "url": "https://rohan0793@bitbucket.org/archiveonline/repository-package.git"
    }
],
"require": {
    "archiveonline/repository-package": "dev-master#e4ce518"
},

现在,当我在tenant-package 中执行composer update 时,我可以查看供应商目录以找到archiveonline/repository-package。同样,当我在主应用程序中执行composer update 时,我可以在供应商目录中找到archiveonline/tenant-package,但找不到archiveonline/repository-package。我究竟做错了什么?我错过了什么吗?这不是办法吗?

【问题讨论】:

    标签: git composer-php


    【解决方案1】:

    Composer 在决定哪些包可用之前必须了解所有可能的存储库。默认情况下,只有 packagist.org 在列表中并且知道所有公开发布的包。

    如果您想添加单独的存储库,您必须将它们全部添加到根包中。您不能间接使用根包中所需的包中提到的存储库。

    Composer 将扫描所有存储库以获取有关任何包含包的信息,但如果它允许间接包链接,那么如果一个包指向一长串其他包(如果包含在您使用的公共包中),否则它将递归地继续查找具有指向其他存储库的新链接的新存储库等。

    设计决定只使用根包composer.json 的存储库知识,因此您的所有 Git 存储库都必须在此处提及。

    您可以想象,这很乏味,所以有一些帮助:满足。您将其配置为了解您的所有存储库,并且它将在一个地方收集它找到的所有元数据。运行它会创建一些静态文件,您必须通过 HTTP 或 HTTPS 提供这些文件,然后您在所有 composer.json 文件中使用 "type":"composer", "url": "http://example.com/your/satis/path" 指向此位置。

    每当您添加新包或新包的新版本时,在 Satis 更新元数据文件后,Composer 将了解它们并允许从任何位置以最新(非冲突)版本添加任何包。

    【讨论】:

    • 我认为这是有道理的。谢谢。
    猜你喜欢
    • 2017-02-03
    • 2014-05-19
    • 2017-01-04
    • 2023-04-01
    • 2015-03-19
    • 1970-01-01
    • 2016-03-12
    • 2014-08-19
    • 2019-11-04
    相关资源
    最近更新 更多