Композитор - не найдено соответствующего пакета
У меня есть PHP-фреймворк, который я построил, и я пытаюсь разделить все на разные репозитории и настроить его в composer, чтобы сделать мою жизнь проще.
По сути, у меня есть 3 репозитория: один для класса коллекции, который служит базовым классом для типов данных коллекции ("liftkit/collection"), другой - оболочка для входных переменных ("liftkit/input", которая зависит от репо коллекции) и третий - для ядра ("liftkit/core", который зависит от входной оболочки).
Когда я бегу composer update
на "liftkit / input" он устанавливает "liftkit / collection" и работает нормально, но когда я запускаю его на "liftkit / core", он выдает следующую ошибку:
Проблема 1 - Запрос на установку лифта /input @dev -> выполняется лифтом /input[dev-master]. - liftkit/input dev-master требует, чтобы liftkit/collection dev-master -> не найдено соответствующего пакета.
Вот мои файлы composer.json:
{
"name": "liftkit/collection",
"description": "LiftKit base class for collections",
"license": "LGP-2.1",
"autoload": {
"psr-4": {
"LiftKit\\": "src/"
}
},
"require": {
},
"require-dev": {
"phpunit/phpunit": "4.5.*"
}
}
{
"name": "liftkit/input",
"description": "LiftKit input wrappers",
"license": "LGP-2.1",
"autoload": {
"psr-4": {
"LiftKit\\": "src/"
}
},
"require": {
"liftkit/collection": "dev-master"
},
"require-dev": {
"phpunit/phpunit": "4.5.*"
},
"repositories": [
{
"type": "git",
"url": "https://github.com/liftkit/collection"
}
]
}
{
"name": "liftkit/core",
"description": "LiftKit Core Libraries",
"license": "LGP-2.1",
"minimum-stability": "dev",
"autoload": {
"psr-4": {
"LiftKit\\": "src/"
}
},
"require": {
"liftkit/input": "dev-master",
"liftkit/dependency-injection": "dev-master"
},
"require-dev": {
"phpunit/phpunit": "4.5.*"
},
"repositories": [
{
"type": "git",
"url": "https://github.com/liftkit/input"
},
{
"type": "git",
"url": "https://github.com/liftkit/dependency-injection"
}
]
}
Любая помощь с благодарностью. Благодарю.
2 ответа
Похоже, что композитор не будет разрешать хранилища рекурсивно. Из документов:
Репозитории не разрешаются рекурсивно. Вы можете добавить их только в свой главный composer.json. Объявления репозитория зависимостей composer.jsons игнорируются.
Так что, думаю, мне не повезло. Я должен указать репозитории в каждом репо.
Похоже, вы пытаетесь потребовать нестабильный пакет, который зависит от другого нестабильного пакета.
Возможные решения:
- Используйте теги, чтобы композитор знал, какую версию установить (я бы порекомендовал)
Назовите все необходимые вам репозитории в вашем главном композиторе
@dev
тег"liftkit/input": "@dev", "liftkit/collection": "@dev"