Два composer.json для проекта

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
SkyCheck
Сообщения: 1
Зарегистрирован: 2018.05.12, 14:08

Два composer.json для проекта

Сообщение SkyCheck » 2018.05.14, 14:46

Добрый день.
Хочу написать движек сайтов на yii2 и задумывается структура проектов с двумя composer.json
Первый будет отвечать за все общие зависимости для движка, тоесть пакет с yii2 и т.п.
Второй будет на каждом сайте свой и подтягивать все пакеты и зависимости в свой vendor которые нужны конкретно этому проекту.

Для осуществления данной задумки хотел использовать composer-merge-plugin в json проекта устанавливаю и прописываю настройки к главному json файлу:

Код: Выделить всё

    "require": {
        "wikimedia/composer-merge-plugin": "^1.4"
    },
    "extra": {
        "merge-plugin": {
            "require": [
                "../../yii2sources/core/composer.json"
            ],
            "recurse": true,
            "replace": false,
            "ignore-duplicates": false,
            "merge-dev": true,
            "merge-extra": false,
            "merge-extra-deep": false,
            "merge-scripts": false
        }
    }
Проблема наступает при composer update того джейсона который относится непосредственно к проекту. он начинает тянуть все содержимое указанное в главном файле json хотя оно уже и так было скачано в общий vendor. Получается что фреймворк у меня сразу в двух местах находится и это естественно не то что задумывалось.

Можно ли сделать таки как это сделать, чтоб компосер проекта не тянул уже скаченные пакеты из основного json файла если они уже и так были скачаны и находятся в своем вендоре, а тянул только то что прописано в проектном json и только те зависимости которых нет в основном?

Nex-Otaku
Сообщения: 791
Зарегистрирован: 2016.07.09, 21:07

Re: Два composer.json для проекта

Сообщение Nex-Otaku » 2018.05.18, 12:27

Первый будет отвечать за все общие зависимости для движка, тоесть пакет с yii2 и т.п.
1. Делаешь модуль, в нём прописываешь все нужные зависимости.
Второй будет на каждом сайте свой и подтягивать все пакеты и зависимости в свой vendor которые нужны конкретно этому проекту.
2. Это твой единственный "composer.json" файл для конкретного проекта, в котором ты указываешь модуль из п.1 и любые дополнительные зависимости.

Ответить