Краткий ответ: Нет, обычно вам нужно только добавить зависимости, которые вы хотите использовать. В чем бы ни нуждались эти зависимости, они должны определять себя.
Например, ваш проект требует библиотеки A & C. Если библиотека A говорит, что она требует библиотеки B, тогда композитор также загрузит ее, и вам не нужно об этом заботиться. Когда библиотека B определяет библиотеку C & D как зависимость, она также загрузит библиотеку D и проверит, требуется ли вам и библиотеке B версия библиотеки C, которую можно использовать, или выдает ошибку, которую либо вы, либо библиотека B должны изменить Требования к версии для библиотеки C.
Если библиотеки A и B имеют phpunit в своих dev-зависимостях, то composer игнорирует их, потому что require-dev
означает, что эта зависимость не нужна для использования библиотеки, только для разработки. Composer будет загружать только ваши dev-зависимости (если вы не используете --no-dev
, например, на вашем сервере prod, где вам также не нужны зависимости для разработки, потому что вы только хотите запустить свой проект).
Вы должны определять зависимости, которые вы используете непосредственно как корневые зависимости (все они, даже если ваши зависимости уже предоставляют их). Те зависимости, которые вы используете, сами определяют, что им нужно, и композитор будет решить все эти требования для вас и определить, что скачать и какую версию.
Если вы видите библиотеку, в которой вы не знаете, почему она существует, вы также можете использовать composer why <vendor/library-name>
, чтобы узнать, почему она была установлена.