2015-03-26 2 views
1

У меня есть проект, который зависит от локального пакета, который сам по себе зависит от другого локального pakcage.Composer не находит локальную зависимость vcs

Проект

{ 
... 
    "repositories": [ 
    { 
     "packagist": false 
    }, 
    { 
     "type": "vcs", 
     "url": "/path/to/local/package1" 
    }, 
    ], 
    "require": { 
    "local/package1": "dev-master" 
    } 
... 
}

Пакет 1

{ 
... 
    "repositories": [ 
    { 
     "packagist": false 
    }, 
    { 
     "type": "vcs", 
     "url": "/path/to/local/package2" 
    }, 
    ], 
    "require": { 
    "local/package2": "dev-master" 
    } 
... 
} 

Когда я делаю composer install на package1, все работает, как и ожидалось, packages2 найден и установлен. Но когда я делаю это на project он не может найти package2 с этой ошибкой:

 
Problem 1 
    - Installation request for local/package1 dev-master -> satisfiable by local/package1[dev-master]. 
    - local/package1 dev-master requires local/package2 dev-master -> no matching package found. 

ответ

2

От композитора manual:

Repositories are only available to the root package and the repositories defined in your dependencies will not be loaded. Read the FAQ entry if you want to learn why.

+0

Спасибо, я должен добавить все к JSON проекта. Было бы здорово, если бы композитор добавил опцию '--recursive-repositories' для таких случаев. Решаемые. –

+0

Да, композитор не настолько гибкий, когда речь идет о рекурсии, есть и другие подводные камни, например. нет вложенного require-dev. – estus

+0

Рекурсивные локальные репозитории - сложная проблема. Не стоит тратить время и средства на его реализацию, поскольку работа с местными репозиториями и должна быть временной. Решение состоит в том, чтобы «публиковать» конфиденциально (Satis) или публично (Packgist или clone). @estus Можете ли вы предоставить прецедент для функции «Вложенный запрос-dev». –

Смежные вопросы