我对Composer加载私有存储库项目的依赖关系感到有些困惑。我找到了这个链接,但我不确定this comment是指嵌套存储库还是只是存储库的任何依赖关系。澄清我的情况:
我的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"
},
}
所以我的问题是,我想通过作曲家通过私人存储库实现的目标,如果有的话,是否有人知道我哪里出错?
答案 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"
}
]