Используя Composer, можно ли распределять зависимости между несколькими проектами?

Прежде всего, я полный новичок в Composer. Я пробовал это, так как это звучит потрясающе и в основном потому, что Zend Framework 2 использует его.

Zend Framework 2 на самом деле также является причиной этого потока.

Он получает основы композитора. Но с моей текущей настройкой сервера у меня есть запрос, который я не могу понять, если это возможно.

Позволь мне объяснить.

У меня есть несколько проектов Zend Framework 2:

  • / Главная / Morten / сайты / Project-1 /
  • / Главная / Morten / сайты / Проект-2 /
  • / Главная / Morten / сайты / Project-3 /

Все эти проекты должны запускать ZF2. При запуске композитора в каждом проекте – каждый из них получает отдельную загрузку файлов библиотеки ZF2. Это немного избыточно с моей настройкой.

У меня есть полная и актуальная загрузка библиотеки ZF2, расположенная по адресу: / var / www / shared / Zend /

И мой php.ini имеет этот путь, добавленный к include_path PHP, поэтому вся библиотека ZF2 доступна для всех трех проектов.

ВОЗМОЖНО, чтобы использовать Composer в его настройке. Потому что, если я попытаюсь изменить материал и попробовать все в файлах композитора, тогда он просто перезагружает Zend, потому что он является обязательным компонентом для других модулей.

Это можно сделать? И если да, как я могу это сделать?

Надеюсь, я объяснил себе достаточно хорошо, чтобы вы, ребята, поняли, что я пытаюсь делать и чего хочу 🙂

Заранее большое спасибо!

С уважением, Мортен

Возможно, у вас может быть один файл composer.json который хранится в /var/www/shared/Zend , где вы будете устанавливать свои зависимости и использовать Composer для управления ими. Тогда все проекты могут включать один и тот же автозагрузчик.

Однако я бы не рекомендовал такой подход:

  • Зависимости вашего проекта ( composer.json ) должны храниться вместе с вашим проектом. Если вы хотите установить свой проект где-то в другом месте (например, если вы хотите переместить один проект на другой сервер), вам не нужно компоновать composer.json для установки необходимых зависимостей.
  • Невозможно обновить зависимости одного проекта, не обновляя зависимости всех других проектов. Если вы хотите представить новую функцию в проекте 1, для которой требуется новая версия определенной зависимости, все остальные проекты также получат эту новую версию, что может привести к разрыву обратной совместимости, если более старая функция, на которую опирается Project 2, – это больше не поддерживается. Поскольку у вас может быть только одна версия каждой зависимости, для двух проектов невозможно иметь разные версии одной и той же зависимости.

Такой подход может быть полезен, если все проекты будут иметь одинаковые функциональные возможности и код, но в этом случае вы, вероятно, должны объединить их в один проект.

Во всех остальных случаях я предлагаю использовать Composer так, как он должен использоваться: предоставить всем проектам свой собственный файл composer.json и позволить Composer загружать зависимости для каждого проекта в каталоге vendor каждого проекта. Недостатком является то, что это будет стоить вам немного больше места на диске, но взамен вы получите большую гибкость.