私有作曲家软件包 - 未找到有效的作曲家.json
我正在尝试使用作曲家加载我在BitBucket上托管的库,如官方文档和此处所述,但不断收到以下错误:
[Composer\Repository\InvalidRepositoryException]
No valid composer.json was found in any branch or tag of [repository URL], could not load a package from it.
这是我的项目 composer.json:
{
"name": "Project name",
"require": {
"my-vendor/my-package": "dev-master"
},
"repositories": [
{
"type": "vcs",
"url": [repository URL]
}
]
}
这是我的远程存储库中的composer.json(显然找不到):
{
"name": "my-vendor/my-package",
"version": "0.3",
"autoload": {
"psr-0": {
"NS_": "src"
}
}
}
我应该提到,两个composer.json文件都在根目录中。
其他一些注意事项:
我还尝试了“非作曲家包”方法,即在我的项目 composer.json 中指定包信息,并从我的远程存储库中省略 composer.json,如文档中所述。这将成功克隆主分支,但随后导致以下错误:
[RuntimeException]
Failed to execute git checkout "master" && git reset --hard "master"
fatal: Not a git repository (or any of the parent directories): .git
但是,该软件包按预期下载到/vendor,因此我不确定为什么它再次尝试签出master。
这不是我希望解决这个问题的方式(因为我宁愿在远程存储库中使用composer.json),但它可能有助于识别其他地方的问题。
感谢您的任何帮助。
编辑
我已经设法通过HTTP引用package.json来使其工作:
"repositories": [
{
"type": "composer",
"url": "http://localhost/packages.json"
}
]
packages.json 看起来像这样:
{
"packages": {
"vendor/my-package": {
"dev-master": {
"name": "vendor/my-package",
"version": "dev-master",
"source": {
"url": [repository URL],
"type": "git",
"reference": "master"
}
}
}
}
}
这是让它工作的唯一方法吗?如果我只使用一两个内部软件包,那么托管我自己的 packages.json 文件似乎有点过分了。
无论如何,这给了我与我之前提到的相同的Git错误。
编辑 2
强制执行错误(无效的 SSH 密码短语)会得到以下结果:
[RuntimeException]
Failed to execute git clone "[repository URL]" "C:\workspace\DFv3\vendor\vendor/my-package" && cd /D "C:\workspace\DFv3\vendor\vendor/my-package" && git remote add composer "[repository URL]" && git fetch composer
所以我可以清楚地看到它在这里做什么。但是,似乎在此命令运行后,它会进入目录并尝试运行:cd
.git
git checkout "master" && git reset --hard "master"
大概是为了摆脱它拉出的作曲家实例。但是,它在错误的目录中运行了这个,我不知道为什么。