Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > PHP: Общие вопросы > Два composer.json для проекта |
Автор: SkyTello 16.5.2018, 19:53 | ||
Добрый день. Хочу написать движек сайтов на yii2 и задумывается структура проектов с двумя composer.json Первый будет отвечать за все общие зависимости для движка, тоесть пакет с yii2 и т.п. Второй будет на каждом сайте свой и подтягивать все пакеты и зависимости в свой vendor которые нужны конкретно этому проекту. Для осуществления данной задумки хотел использовать composer-merge-plugin в json проекта устанавливаю и прописываю настройки к главному json файлу:
Проблема наступает при composer update того джейсона который относится непосредственно к проекту. он начинает тянуть все содержимое указанное в главном файле json хотя оно уже и так было скачано в общий vendor. Получается что фреймворк у меня сразу в двух местах находится и это естественно не то что задумывалось. Можно ли сделать таки как это сделать, чтоб компосер проекта не тянул уже скаченные пакеты из основного json файла если они уже и так были скачаны и находятся в своем вендоре, а тянул только то что прописано в проектном json и только те зависимости которых нет в основном? |
Автор: Vardoulacha 17.5.2018, 07:02 |
Для этого вы свой движок делаете library, а проект делаете project, который создается как create-project (по факту делается клон репы и запуск composer install), таким образом в проекте будет по умолчанию всего одна зависимость от вашего ядра, и лежать ядро будет в vendor, а дальше к проекту цепляйте что хотите. в качестве примера (никакой рекламы, проект для своих нужд) вот мое ядро https://github.com/Lemurro/core а вот api-сервер, который использует это ядро https://github.com/Lemurro/server и у него в composer.json только зависимость от ядра, а дальше к проекту можно цеплять что угодно "require": { "php": ">=7.0.0", "lemurro/core": "^0" }, Плюс в том что движок можно легко обновлять как любую зависимость |