Composer php 加载专用git存储库的编写器依赖项

Composer php 加载专用git存储库的编写器依赖项,composer-php,Composer Php,我有点困惑Composer是如何加载私有存储库项目的依赖项的。我找到了这个链接,但我不确定它是指嵌套的存储库还是仅仅指存储库的任何依赖项。为了澄清我的情况: 我有一个私有的git存储库,我正试图将它添加为项目的依赖项 私有git存储库也是一个composer项目,它包含一个composer.json,需要公开可用的包 我在composer.json中为该项目编写了以下代码 "repositories": [ { "type": "package", "pa

我有点困惑Composer是如何加载私有存储库项目的依赖项的。我找到了这个链接,但我不确定它是指嵌套的存储库还是仅仅指存储库的任何依赖项。为了澄清我的情况:

  • 我有一个私有的git存储库,我正试图将它添加为项目的依赖项
  • 私有git存储库也是一个composer项目,它包含一个composer.json,需要公开可用的包
  • 我在composer.json中为该项目编写了以下代码

    "repositories": [
        {
            "type": "package",
            "package": {
                "name": "{vendor}/{package-name}",
                "version": "{arbitrary-version}",
                "type": "package",
                "source": {
                    "url": "git@github.com:{github-username}/{github-repository}.git",
                    "type": "git",
                }
            }
        }
    ]
    "require": {
        "{vendor}/{package-name}": "^0.0.1"
    }
    
    因此,如果我在这些更改后对项目执行
    composer update
    ,它将成功地从私有存储库下载我的包,但不会触发对私有存储库的composer.json的检查/更新-因此不会创建供应商文件夹,也不会安装关键依赖项。私有存储库composer.json如下所示:

    {
        "name": "{vendor}/{package-name}",
        "description": "{removed}",
        "type": "library",
        "require": {
            "illuminate/database": "^5.6",
            "chumper/zipper": "1.0.x",
            "symfony/debug": "^4.0",
            "vlucas/phpdotenv": "^2.4"
        },
    } 
    
    所以我的问题是,我想通过composer使用私有存储库做什么是可以实现的,如果可以,有人知道我哪里出了问题吗?

    类型用于非composer依赖项。如果您使用此类型,Composer甚至不会在定义的包源中查找
    Composer.json
    文件,您需要在项目中的包声明中包含有关包的所有必需信息
    Composer.json

    "repositories": [
        {
            "type": "package",
            "package": {
                "name": "{vendor}/{package-name}",
                "description": "{removed}",
                "type": "library",
                "require": {
                    "illuminate/database": "^5.6",
                    "chumper/zipper": "1.0.x",
                    "symfony/debug": "^4.0",
                    "vlucas/phpdotenv": "^2.4"
                },
                "version": "{arbitrary-version}",
                "source": {
                    "url": "git@github.com:{github-username}/{github-repository}.git",
                    "type": "git",
                }
            }
        }
    ]
    
    但是在您的情况下(您有一个带有适当
    composer.json
    )的包),您应该使用
    vcs
    类型:

    "repositories": [
        {
            "type": "git",
            "url": "git@github.com:{github-username}/{github-repository}.git"
        }
    ]
    
    类型用于非编写器依赖项。如果您使用此类型,Composer甚至不会在定义的包源中查找
    Composer.json
    文件,您需要在项目中的包声明中包含有关包的所有必需信息
    Composer.json

    "repositories": [
        {
            "type": "package",
            "package": {
                "name": "{vendor}/{package-name}",
                "description": "{removed}",
                "type": "library",
                "require": {
                    "illuminate/database": "^5.6",
                    "chumper/zipper": "1.0.x",
                    "symfony/debug": "^4.0",
                    "vlucas/phpdotenv": "^2.4"
                },
                "version": "{arbitrary-version}",
                "source": {
                    "url": "git@github.com:{github-username}/{github-repository}.git",
                    "type": "git",
                }
            }
        }
    ]
    
    但是在您的情况下(您有一个带有适当
    composer.json
    )的包),您应该使用
    vcs
    类型:

    "repositories": [
        {
            "type": "git",
            "url": "git@github.com:{github-username}/{github-repository}.git"
        }
    ]
    

    非常感谢你的帮助,我知道我可能做错了什么。我知道这超出了我最初的问题的范围,但不幸的是,在composer安装了我的repo中的所有软件包之后,
    composer更新过程即将结束,但当它安装/克隆实际的存储库时,它会吐出:“{package}/{name}”:“dev master”},“repositories”:[{“type”:“vcs”,“url”:git@github.com:{username}/{repo}.git”,“no-api”:true}]我也在使用
    --preference source
    标志,所以不确定它为什么仍然尝试使用dist?如果有帮助,请提供更多信息:现在尝试从dist下载-安装{package}/{repo}(dev master acb616e)下载:失败[Composer\Downloader\TransportException]无法下载“{username}/{repo}/zipball/acb616ee90ef5715641c7b91373d4c0613d9749b”文件(未找到HTTP/1.404)@XanT尝试在类型声明中将
    vcs
    更改为
    git
    。运气不好,但您帮助我解决了我的主要问题,因此我已将其标记为已接受。将其从
    vcs
    更改为
    git
    确实现在将其从传输异常更改为运行时异常,但相同的消息仍然存在。我必须进行更多调试,感谢您的帮助lp@XanT您可以尝试删除
    供应商
    目录和
    composer.lock
    文件。并清除composer缓存:
    composer clearcache
    。我不确定它为什么不能与
    git
    作为一种类型一起使用,可能与缓存有关。非常感谢您的帮助,我知道我可能做了一些简单的错误。我知道这超出了范围我最初的问题的范围,但不幸的是,在composer安装了我的repo中的所有包之后,现在处于
    composer更新过程的末尾,但是当它安装/克隆实际的存储库时,它会抛出:“{package}/{name}”:“dev master”},“存储库”:[{“type”:“vcs”,“url”:"git@github.com:{username}/{repo}.git”,“no-api”:true}]我也在使用
    --preference source
    标志,所以不确定它为什么仍然尝试使用dist?如果有帮助,请提供更多信息:现在尝试从dist下载-安装{package}/{repo}(dev master acb616e)下载:失败[Composer\Downloader\TransportException]无法下载“{username}/{repo}/zipball/acb616ee90ef5715641c7b91373d4c0613d9749b”文件(未找到HTTP/1.404)@XanT尝试在类型声明中将
    vcs
    更改为
    git
    。运气不好,但您帮助我解决了我的主要问题,因此我已将其标记为已接受。将其从
    vcs
    更改为
    git
    确实现在将其从传输异常更改为运行时异常,但相同的消息仍然存在。我必须进行更多调试,感谢您的帮助lp.@XanT您可以尝试删除
    供应商
    目录和
    composer.lock
    文件。并清除composer缓存:
    composer clearcache
    。我不确定它为什么不能作为一种类型与
    git
    一起工作,可能与缓存有关。