Как я могу установить зависимости с помощью composer, если у меня есть несколько composer.json в нескольких каталогах?

Например, скажем, что у нас есть что-то вроде этого:

.
├── app
│   ├── module1
│   │   └── composer.json
│   └── module2
│       └── composer.json
└── composer.json

В каждом composer.json у нас разные зависимости.

Как я могу установить все необходимые пакеты с помощью одной команды?

4

Решение

С ~ 2016 ты можешь использовать составитель локальных пакетов, у которых есть нативная поддержка.

К вашему примеру просто отредактируйте composer.json:

{
"repositories": [
{ "type": "path", "url": "app/module1" },
{ "type": "path", "url": "app/module2" }
]
}

И запустить:

composer update

Это все 🙂

0

Другие решения

Например, вы можете создать Makefile который сочетает в себе необходимые шаги.

Тем не менее, вы можете установить зависимости для всех composer.json файлы, указав путь к рабочим каталогам (каталоги, содержащие эти composer.json файлы) с помощью --working-dir вариант.

Увидеть https://getcomposer.org/doc/03-cli.md#global-options:

—Working-DIR (-D): Если указано, используйте данный каталог в качестве рабочего каталога.

Makefile

Вот пример:

.PHONY: composer

composer:
composer install --working-dir app/module/1
composer install --working-dir app/module/2
composer install

а потом беги

$ make composer

В качестве альтернативы, посмотрите на beberlei/fiddler и посмотреть Монолитные репозитории с PHP и Composer Бенджамин Эберлей.

0