composer.dev.json

Обсуждаем, как правильно строить приложения
Ответить
Bio man
Сообщения: 609
Зарегистрирован: 2013.07.22, 10:40

composer.dev.json

Сообщение Bio man »

Веду разработку сразу нескольких пакетов, зависящих друг от друга.
Но, что бы минимизировать количество получаемой боли, проще всего настроить кастомные репозитории в composer.json (type: path).
Но вот беда, я не хочу коммитить composer.json в таком виде. В коммите должны быть совсем другие настройки репозиториев (настройки приватных репозиториев на гитлабе).
Нашел такой плагин wikimedia/composer-merge-plugin, пробовал смержить composer.dev.json, но плагин отказался работать. Перепробовал разные настройки, все бестолку. Плагин, судя по всему, забросили, ровно 100 лет не обновлялся.

Какие варианты решения проблемы предложите? Сталкивались с таким?
Nex-Otaku
Сообщения: 831
Зарегистрирован: 2016.07.09, 21:07

Re: composer.dev.json

Сообщение Nex-Otaku »

Вот не поленился залезть в доки:
By setting the COMPOSER env variable it is possible to set the filename of composer.json to something else.
https://getcomposer.org/doc/03-cli.md#composer

Скрещивать не нужно, ведёшь два раздельных файла и всё.
Bio man
Сообщения: 609
Зарегистрирован: 2013.07.22, 10:40

Re: composer.dev.json

Сообщение Bio man »

Спасибо огромное! Как-то пропустил тему окружения, но это, похоже, то, что нужно.
А если настроить COMPOSER_HOME/config.json, то и 2 разных файла не понадобятся!
Буду пробовать.
Bio man
Сообщения: 609
Зарегистрирован: 2013.07.22, 10:40

Re: composer.dev.json

Сообщение Bio man »

Что COMPOSER, что config.json отлично работают на корневом уровне.
Но не работают, если вложенность больше 1.
Например, есть локальные пакеты A B C.
A зависит от B, а B зависит от C.
Если запустить install из A, то композер успешно находит и загружает B, но C уже загрузить не может, т.к. игнорирует config.json и COMPOSER переменную.

Как быть?
Bio man
Сообщения: 609
Зарегистрирован: 2013.07.22, 10:40

Re: composer.dev.json

Сообщение Bio man »

Пока использую такое кривое решение.
В config.json прописал пути до локальных проектов.
Переменную COMPOSER установил в composer.dev.json.
Добавил в гитигнор composer.dev.json и composer.dev.lock.
В composer.dev.json перечислил все локальные зависимости, в том числе и вложенные.

Ну хоть так работает. Другого, штатного, решения, наверное, и нет.
Ответить