Композитор - не найдено соответствующего пакета

У меня есть 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 игнорируются.

Так что, думаю, мне не повезло. Я должен указать репозитории в каждом репо.

Похоже, вы пытаетесь потребовать нестабильный пакет, который зависит от другого нестабильного пакета.

Возможные решения:

  1. Используйте теги, чтобы композитор знал, какую версию установить (я бы порекомендовал)
  2. Назовите все необходимые вам репозитории в вашем главном композиторе @dev тег

    "liftkit/input": "@dev",
    "liftkit/collection": "@dev"
    
Другие вопросы по тегам