composer怎么查看某个包的依赖树_composer depends命令查询下游依赖【技巧】

发布时间 - 2026-01-14 00:00:00    点击率:
Composer原生查下游依赖唯一支持的是composer show --who(≥2.2版本),如composer show --who psr/log;旧版需升级,或使用depchecker插件获取递归路径等高级功能。

Composer 没有直接查“下游依赖”(即谁依赖了某个包)的原生命令,composer depends 是个常见误解——它根本不存在。

为什么 composer depends 会报错

执行 composer depends monolog/monolog 会提示 Command "depends" is not defined。Composer 官方命令列表里从没提供过这个功能,所有声称可用的教程都是混淆了 composer show 的反向用法或依赖插件。

  • Composer 原生只支持 composer show --tree(查某包的上游依赖树)
  • composer show vendor/package 显示包信息,但不列出谁引用了它
  • 真正要查“谁用了这个包”,得靠 composer show --who 或第三方插件

正确查下游依赖:用 composer show --who

这是 Composer 2.2+ 内置的、唯一原生支持的下游查询方式,语法是

composer show --who vendor/package-name

例如查谁依赖了 psr/log

composer show --who psr/log

输出类似:

monolog/monolog  2.9.0  requires  psr/log (^1.0 || ^2.0 || ^3.0)
symfony/console  6.4.0  requires  psr/log (^1.0 || ^2.0 || ^3.0)
  • 仅显示直接依赖关系,不递归展开(比如 A → B → C,只显示 B 依赖 C,不显示 A 依赖 B)
  • 要求 Composer 版本 ≥ 2.2;旧版本需升级:composer self-update
  • 不区分 dev-dependency 和 require,一并列出

更完整的下游分析:用 depchecker 插件

如果需要递归、可视化或过滤(如只看生产环境依赖),推荐安装社区插件 depchecker

composer global require jakub-onderka/composer-depchecker

然后运行:

depchecker --package psr/log
  • 能列出间接依赖路径(A → B → C → psr/log)
  • 支持 JSON 输出、HTML 报告、未使用包检测等高级功能
  • 注意:全局安装后需确保 ~/.composer/vendor/bin 在系统 $PATH

容易忽略的关键点

下游依赖分析结果高度依赖当前 composer.lock 状态:

  • 如果某包只在 require-dev 中,但项目已运行 composer install --no-dev--who 就不会显示它
  • 私有包或 path repos 若未正确加载,也可能被漏掉
  • composer show --who 不检查 autoload-dev 或测试文件里的手动 require,那些属于运行时逻辑,不属于 Composer 依赖图

真要确认一个包是否被实际加载,得结合 composer dump-autoload -a 和代码扫描,不能只信依赖命令。


# html  # js  # json  # composer  # 为什么  # require  # 递归  # 的是  # 都是  # 这是  # 加载  # 是个  # 用了  # 不存在  # 只显示  # 只在 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何处理JSON字段的查询和更新_Laravel JSON列操作与查询技巧  如何快速搭建高效可靠的建站解决方案?  Laravel distinct去重查询_Laravel Eloquent去重方法  Laravel Telescope怎么调试_使用Laravel Telescope进行应用监控与调试  浅谈Javascript中的Label语句  如何用景安虚拟主机手机版绑定域名建站?  Android okhttputils现在进度显示实例代码  QQ浏览器网页版登录入口 个人中心在线进入  悟空识字如何进行跟读录音_悟空识字开启麦克风权限与录音  WEB开发之注册页面验证码倒计时代码的实现  黑客如何利用漏洞与弱口令入侵网站服务器?  郑州企业网站制作公司,郑州招聘网站有哪些?  Internet Explorer官网直接进入 IE浏览器在线体验版网址  bootstrap日历插件datetimepicker使用方法  Laravel怎么使用Blade模板引擎_Laravel模板继承与Component组件复用【手册】  如何确认建站备案号应放置的具体位置?  香港网站服务器数量如何影响SEO优化效果?  Linux虚拟化技术教程_KVMQEMU虚拟机安装与调优  Laravel怎么实现前端Toast弹窗提示_Laravel Session闪存数据Flash传递给前端【方法】  Laravel如何使用Spatie Media Library_Laravel图片上传管理与缩略图生成【步骤】  如何确保FTP站点访问权限与数据传输安全?  Laravel如何使用Guzzle调用外部接口_Laravel发起HTTP请求与JSON数据解析【详解】  如何用低价快速搭建高质量网站?  使用C语言编写圣诞表白程序  如何在阿里云服务器自主搭建网站?  网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?  php增删改查怎么学_零基础入门php数据库操作必知基础【教程】  如何用美橙互联一键搭建多站合一网站?  Laravel策略(Policy)如何控制权限_Laravel Gates与Policies实现用户授权  如何打造高效商业网站?建站目的决定转化率  JavaScript如何实现类型判断_typeof和instanceof有什么区别  Bootstrap整体框架之JavaScript插件架构  LinuxCD持续部署教程_自动发布与回滚机制  电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?  Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性  Laravel如何使用Eloquent ORM进行数据库操作?(CRUD示例)  打开php文件提示内存不足_怎么调整php内存限制【解决方案】  详解jQuery停止动画——stop()方法的使用  如何生成腾讯云建站专用兑换码?  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  java中使用zxing批量生成二维码立牌  Laravel如何生成API文档?(Swagger/OpenAPI教程)  详解阿里云nginx服务器多站点的配置  Laravel如何与Inertia.js和Vue/React构建现代单页应用  如何选择PHP开源工具快速搭建网站?  googleplay官方入口在哪里_Google Play官方商店快速入口指南  如何制作一个表白网站视频,关于勇敢表白的小标题?  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  BootStrap整体框架之基础布局组件  微信小程序 canvas开发实例及注意事项