如何查看一个包被哪个依赖引入了?(composer why命令)

2次阅读

composer why 可快速查出某包的直接依赖来源,如 composer why monolog/monolog 显示其被 symfony/framework-bundle 显式引入;加 -t 参数可递归展示完整依赖链,配合 –dev 可查开发依赖。

如何查看一个包被哪个依赖引入了?(composer why命令)

composer why 可以快速查出某个包是被谁引入的,也就是它的直接依赖来源。

基本用法:查直接上游依赖

运行命令:

composer why vendor/package-name

例如想查 monolog/monolog 是被哪个包拉进来的:

composer why monolog/monolog

输出类似:

symfony/framework-bundle v6.4.0 requires monolog/monolog (^3.0)

说明它是被 symfony/framework-bundle 显式 require 的。

如何查看一个包被哪个依赖引入了?(composer why命令)

Hugging Face

Hugging Face AI开源社区

如何查看一个包被哪个依赖引入了?(composer why命令) 270

查看详情 如何查看一个包被哪个依赖引入了?(composer why命令)

查看完整依赖链(递归向上)

composer why 默认只显示一级依赖。如果想知道更上层是谁触发了整个链条,可以加 -t(tree)参数:

composer why -t monolog/monolog

它会展示从根项目开始,逐级展开的依赖路径,比如:

my-project
  └── symfony/framework-bundle v6.4.0
    └── monolog/monolog ^3.0

配合其他命令快速定位问题

当遇到版本冲突或意外升级时,这个命令特别实用:

  • 先用 composer show 确认当前安装的包名和版本
  • 再用 composer why vendor/package 找出谁在依赖它
  • 结合 composer depends --tree vendor/package(Composer 2.5+)获得更详细的反向依赖树
  • 必要时检查对应依赖的 composer.json 中 require 字段,确认是否可安全升级或替换

注意点

该命令只对已安装的包有效——如果包没出现在 vendor/composer.lock 中,会提示 “not found”。另外,它不显示 require-dev 引入的包,除非你加上 --dev 参数:

composer why --dev phpunit/phpunit

以上就是如何查看一个包被哪个依赖引入了?(composer why命令)的详细内容,更多请关注php中文网其它相关文章!

text=ZqhQzanResources