Composer php 如果其他模块需要,根编写器文件中是否需要phpunit?

Composer php 如果其他模块需要,根编写器文件中是否需要phpunit?,composer-php,phpunit,Composer Php,Phpunit,如果其他模块需要,根编写器文件中是否需要phpunit 某些依赖项需要phpunit,这是否意味着我也需要根编写器文件中的phpunit才能使这些依赖项完全工作?简短回答:不,通常只需要添加要使用的依赖项。无论这些依赖项需要什么,它们都应该定义自己 例如,您的项目需要库A和库C。如果库A说它需要库B,则composer也会下载该库,而您不必关心它。当库B将库C&D定义为依赖项时,它也将下载库D,并检查您和库B是否都需要可以使用的库C版本或是否引发错误,您或库B是否需要更改库C的版本要求 如果库A

如果其他模块需要,根编写器文件中是否需要phpunit


某些依赖项需要phpunit,这是否意味着我也需要根编写器文件中的phpunit才能使这些依赖项完全工作?

简短回答:不,通常只需要添加要使用的依赖项。无论这些依赖项需要什么,它们都应该定义自己

例如,您的项目需要库A和库C。如果库A说它需要库B,则composer也会下载该库,而您不必关心它。当库B将库C&D定义为依赖项时,它也将下载库D,并检查您和库B是否都需要可以使用的库C版本或是否引发错误,您或库B是否需要更改库C的版本要求

如果库A和库B的开发依赖项中有phpunit,那么composer将忽略它们,因为
require dev
表示使用库时不需要此依赖项,仅用于开发。Composer将只下载您的开发依赖项(除非您使用
--no dev
,例如,在prod服务器上,您也不需要开发依赖项,因为您只想运行项目)

您应该只定义直接用作根依赖项的依赖项(所有这些依赖项,即使您的依赖项已经提供了它们)。您使用的这些依赖项本身定义它们需要什么,composer将为您解决所有这些需求,并确定下载什么以及哪个版本

如果您看到一个不知道为什么会出现的库,您还可以使用
composer why
查找安装它的原因