2013-04-22 8 views
2

Я работаю над проектом, на который вы можете устанавливать расширения, то есть вы устанавливаете основную программу, а затем можете загружать и добавлять к ней сторонние расширения.Совместное использование зависимостей композитора

Если есть два отдельных расширения, требующих одинаковой версии одной и той же зависимости (например, если для двух расширений нужен AWS SDK), есть ли способ сделать это так, чтобы композитор не загружал две копии той же зависимости?

ответ

2

Вы можете создавать свои расширения как пакеты композиторов. Затем добавьте в свои основные ссылки на файлы composer.json на свои собственные пакеты.

Например:

root/ 
    my-extension-a/ 
     composer.json (require: dep-a, dep-b) 
     vendor/ 
      dep-a/ 
      dep-b/ 
    my-extension-b/ 
     vendor/ 
      dep-a/ 
      dep-c/ 
     composer.json (require dep-a, dep-c) 

    main-project/ 
     composer.json (require my-extension-a, my-extension-b) 
     vendor/ 
      my-extension-a/ 
      my-extension-b/ 
      dep-a/ 
      dep-b/ 
      dep-c/ 

composer.json файл в главном проекте будет выглядеть следующим образом:

"require": { 
     "parent5446/my-extension-a": "dev-master", 
     "parent5446/my-extension-b": "dev-master" 
} 

Вы можете сделать ваши расширения общественности в packagist. Или вы можете использовать Satis для ссылки на частные репозитории. Эта функция хорошо документирована здесь: Managing private packages with Satis and Composer

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