加载私有git存储库

时间:2018-05-07 22:17:11

标签: composer-php

我对Composer加载私有存储库项目的依赖关系感到有些困惑。我找到了这个链接,但我不确定this comment是指嵌套存储库还是只是存储库的任何依赖关系。澄清我的情况:

  1. 我有一个私有git存储库,我试图将其添加为项目的依赖项。
  2. 私有git存储库也是一个composer项目,它包含一个需要公开可用包的composer.json。
  3. 我的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"
        },
    } 
    

    所以我的问题是,我想通过作曲家通过私人存储库实现的目标,如果有的话,是否有人知道我哪里出错?

1 个答案:

答案 0 :(得分:4)

package类型用于非作曲家依赖项。如果您使用此类型,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"
    }
]