Требуется ли phpunit в корневом файле composer, если это требуется другим модулям? - PullRequest
1 голос
/ 10 мая 2019

Требуется ли phpunit в корневом файле composer, если это требуется другим модулям?

В некоторых зависимостях требуется phpunit, означает ли это, что мне также нужен phpunit в моем корневом файле composer для полной работы этих зависимостей?

1 Ответ

1 голос
/ 10 мая 2019

Краткий ответ: Нет, обычно вам нужно только добавить зависимости, которые вы хотите использовать. В чем бы ни нуждались эти зависимости, они должны определять себя.

Например, ваш проект требует библиотеки 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>, чтобы узнать, почему она была установлена.

...