Частные пакеты для композиторов - действительный файл composer.json не найден
Я пытаюсь загрузить библиотеку, размещенную на BitBucket, с помощью composer, как описано вофициальная документация а такжеВот, но продолжайте получать следующую ошибку:
[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 package», при котором я указываю информацию о пакете в моем проекте 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 в удаленном репозитории), но это может помочь выявить проблему в другом месте.
Спасибо за любую помощь.
РЕДАКТИРОВАТЬ
Мне удалось заставить его работать, ссылаясь на package.json через HTTP:
"repositories": [
{
"type": "composer",
"url": "http://localhost/packages.json"
}
]
Package.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"
Предположительно, чтобы избавиться от экземпляра композитора он потянул. Тем не менее, он работает в неправильном каталоге, и я не могу понять, почему ..