如果其他模块需要,根 composer 文件中是不是需要 phpunit?

Posted

技术标签:

【中文标题】如果其他模块需要,根 composer 文件中是不是需要 phpunit?【英文标题】:Is phpunit required in root composer file if other modules require it?如果其他模块需要,根 composer 文件中是否需要 phpunit? 【发布时间】:2019-09-27 20:31:33 【问题描述】:

如果其他模块需要,根 composer 文件中是否需要 phpunit?

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

【问题讨论】:

【参考方案1】:

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

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

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

您应该只定义您直接用作根依赖项的依赖项(所有这些依赖项,即使您的依赖项已经提供了它们)。您使用的那些依赖项定义了它们自己的需要和作曲家将为您解决所有这些要求并确定要下载的内容和版本。

如果您看到不知道为什么存在的库,您也可以使用composer why <vendor/library-name> 找出安装它的原因。

【讨论】:

以上是关于如果其他模块需要,根 composer 文件中是不是需要 phpunit?的主要内容,如果未能解决你的问题,请参考以下文章

在 docker compose 中使用主机网络和其他网络

c语言中是如何实现模块化的

PHPStorm、供应商和多个 Git 根

win10安装composer时,提示找不到php拓展的模块,这是为啥

在 MongoDB 中,文档 _id 是不是需要在集合或整个数据库中是唯一的?

每个 docker compose yml 文件是不是与 AWS ECS 容器兼容