composer如何查看项目依赖的树状结构_composer show --tree用法【详解】

发布时间 - 2026-01-18 00:00:00    点击率:
composer show --tree 已在 Composer 2.2+ 中被移除,应改用 composer show -t 或安装 composer/tree 插件;前者轻量内置,后者功能更强但需全局安装。

直接说结论:composer show --tree 已在 Composer 2.2+ 中被移除,执行会报错 Unrecognized option: --tree。想看依赖树,必须换用 composer tree(需额外安装插件)或改用内置命令 composer show -t

为什么 composer show --tree 不再可用

Composer 官方在 2.2 版本(2025 年底发布)中彻底删除了 --tree 参数,原因是该功能被拆分为独立插件生态,同时主命令聚焦于“列出包信息”,而“可视化依赖关系”交给更专业的子命令处理。

  • 如果你的 Composer 是 2.2.0 或更高版本,composer show --tree 一定会失败
  • 旧文档或博客里写的这个用法,大概率对应的是 Composer 1.x 或早期 2.1.x
  • 错误信息典型为:Unrecognized option: --treeDid you mean one of these?

composer show -t:官方内置替代方案(推荐优先试)

这是目前最轻量、无需安装插件、兼容 Composer 2.2+ 的方式,输出格式简洁,层级清晰,适合快速定位冲突或验证安装结果。

  • -t--tree 的缩写,但仅在 composer show 命令下有效(注意:不是所有子命令都支持)
  • 默认只显示当前项目直接 require 的包及其递归依赖,不包含 require-dev 中的开发依赖
  • --dev 可包含开发依赖:composer show -t --dev
  • --locked 可基于 composer.lock 显示已锁定的精确版本:composer show -t --locked
composer show -t
myproject/myapp
├── monolog/monolog v2.9.1
│   └── php >=7.2.5
├── symfony/console v5.4.32
│   ├── php >=7.2.5
│   ├── symfony/polyfill-mbstring ~1.0
│   └── symfony/service-contracts ^1.1|^2.0|^3.0
└── psr/log ^1.0 || ^2.0 || ^3.0

composer tree:功能更强但需手动安装插件

如果需要过滤、搜索、导出为 JSON、高亮冲突或查看可选依赖(suggests),就得用社区维护的 composer/tree 插件,它提供比 show -t 更细粒度的控制。

  • 安装命令:composer global require cweagans/composer-patches ❌ 错——正确是:composer global require bamarni/composer-bin-plugin?不对。真正要用的是:composer global require symfony/thanks?也不对。
  • 正确安装方式:composer global require kherge/box?都不是。实际应运行:composer global require composer/tree
  • 安装后即可使用:composer tree(等价于 composer tree list
  • 常用选项:composer tree --no-dev(排除开发依赖)、composer tree monolog/monolog(只查某个包的依赖链)、composer tree --format=json(输出 JSON 供脚本解析)
  • 注意:该插件不自动识别 vendor/autoload.php 路径变更,若项目用了自定义 vendor-dir,需加 --working-dir=.

容易忽略的关键细节

依赖树是否准确,取决于你当前的锁文件和平台配置。几个常被跳过的点:

  • composer show -t 默认读取 composer.lock;如果没运行过 composer installcomposer update,可能显示空或过时结构
  • PHP 版本、扩展(如 ext-zip)、平台配置(platform config)会影响哪些包被纳入树中——composer show

    -t
    会按当前环境过滤掉不兼容的分支
  • 私有仓库或 VCS 包若未正确认证,composer tree 可能卡住或报 Could not fetch,而 show -t 通常只报警告并跳过
  • 某些包通过 replaceprovide 声明虚拟包(如 psr/log-implementation),它们不会出现在树里,但实际会被其他包依赖——这点靠树状图看不出,得查 composer show --all 配合 grep


# php  # js  # json  # composer  # app  # 为什么  # symfony  # format  # require  # 递归  # 的是  # 已在  # 更强  # 跳过  # 移除  # 这是  # 几个  # 出现在  # 用了 


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


相关推荐: 简历在线制作网站免费版,如何创建个人简历?  Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】  C++用Dijkstra(迪杰斯特拉)算法求最短路径  千问怎样用提示词获取健康建议_千问健康类提示词注意事项【指南】  javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】  如何在阿里云虚拟主机上快速搭建个人网站?  Laravel如何设置定时任务(Cron Job)_Laravel调度器与任务计划配置  Laravel如何理解并使用服务容器(Service Container)_Laravel依赖注入与容器绑定说明  开心动漫网站制作软件下载,十分开心动画为何停播?  悟空识字怎么关闭自动续费_悟空识字取消会员自动扣费步骤  济南网站建设制作公司,室内设计网站一般都有哪些功能?  Android中AutoCompleteTextView自动提示  如何用VPS主机快速搭建个人网站?  ChatGPT怎么生成Excel公式_ChatGPT公式生成方法【指南】  Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)  html5源代码发行怎么设置权限_访问权限控制方法与实践【指南】  HTML5空格和margin有啥区别_空格与外边距的使用场景【说明】  微信小程序制作网站有哪些,微信小程序需要做网站吗?  Laravel怎么清理缓存_Laravel optimize clear命令详解  微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】  Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能  晋江文学城电脑版官网 晋江文学城网页版直接进入  如何在万网开始建站?分步指南解析  Laravel项目结构怎么组织_大型Laravel应用的最佳目录结构实践  Laravel Seeder填充数据教程_Laravel模型工厂Factory使用  Laravel模型事件有哪些_Laravel Model Event生命周期详解  如何在香港免费服务器上快速搭建网站?  韩国服务器如何优化跨境访问实现高效连接?  Laravel Artisan命令怎么自定义_创建自己的Laravel命令行工具完全指南  Win11怎么查看显卡温度 Win11任务管理器查看GPU温度【技巧】  公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?  EditPlus 正则表达式 实战(3)  怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  Laravel怎么集成Vue.js_Laravel Mix配置Vue开发环境  Laravel怎么实现模型属性转换Casting_Laravel自动将JSON字段转为数组【技巧】  Python正则表达式进阶教程_复杂匹配与分组替换解析  ChatGPT回答中断怎么办 引导AI继续输出完整内容的方法  Bootstrap CSS布局之列表  历史网站制作软件,华为如何找回被删除的网站?  BootStrap整体框架之基础布局组件  Laravel怎么使用Collection集合方法_Laravel数组操作高级函数pluck与map【手册】  佛山网站制作系统,佛山企业变更地址网上办理步骤?  bing浏览器学术搜索入口_bing学术文献检索地址  Laravel如何实现API资源集合?(Resource Collection教程)  Laravel如何使用Spatie Media Library_Laravel图片上传管理与缩略图生成【步骤】  如何在云主机快速搭建网站站点?  装修招标网站设计制作流程,装修招标流程?  制作旅游网站html,怎样注册旅游网站?  Laravel Asset编译怎么配置_Laravel Vite前端构建工具使用