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: --tree或Did 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 install或composer update,可能显示空或过时结构 - PHP 版本、扩展(如
ext-zip)、平台配置(platformconfig)会影响哪些包被纳入树中——composer show会按当前环境过滤掉不兼容的分支
-t
- 私有仓库或 VCS 包若未正确认证,
composer tree可能卡住或报Could not fetch,而show -t通常只报警告并跳过 - 某些包通过
replace或provide声明虚拟包(如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前端构建工具使用


