发布于2026-07-17 阅读(0)
扫一扫,手机访问
在 PHP 项目的日常维护中,composer show 是最常用却最容易忽略细节的命令之一。先说几个核心判断:它不只是用来“看包列表”的,更能帮你定位依赖冲突、排查版本异常。但很多人用错了——或者说,还没完全用透。
直接敲一行 composer show,它就能把项目里装的所有包和版本号全列出来,包括传递依赖。注意啊,这里有个容易踩坑的点:很多人以为它只显示 require 里的顶层依赖,但实际上,require-dev 里的开发依赖也会一并出现。除非你加上 --no-dev 参数,才能把它们过滤掉。
如果想只看你自己在 composer.json 里写的那几个顶层依赖,用 composer show --direct。要查某个具体包的详情——比如它被哪些包依赖、当前版本和约束条件——就指定包名,像 composer show lara vel/framework。至于脚本解析需求,加个 --format=json 就能输出整洁的 JSON 数据。
另一个实用技巧:composer show 本身不支持 --tree 参数,但 Composer 有对应的独立命令。执行 composer list | grep show 能看到所有与 show 相关的变体。实际用得最多的三个是:
composer outdated:检查哪些包有新版可升级,顺带提安全更新提示composer show -t vendor/package:用 -t(即 --tree)展示该包的完整依赖树,排查为什么它拉了旧版或冲突版本时特别好用composer show --name-only:只输出纯包名列表,适合在 CI 脚本里做自动化处理说到这儿,可能有人会问:“那 composer info 和 composer show 有什么区别?” 功能上高度重叠,但默认行为不同。指定包名时,composer info monolog/monolog 和 composer show monolog/monolog 输出几乎一样;但如果不指定包名,composer info 会直接报错,而 composer show 会列出全量。这就决定了各自的场景:日常巡检项目依赖总览,用 composer show;要深挖某个包到底是谁引入的,用 composer show -t vendor/package 查它的上游。CI 环境中提取顶层依赖列表,composer show --direct --name-only 稳得很,不用依赖特定格式的文本解析。
最后,提醒一个容易栽跟头的细节:composer show 显示的版本号不一定代表 vendor/ 目录里的真实状态。如果你改过 composer.json 但没执行 composer install 或 composer update,它读的还是 composer.lock 里的记录——万一你手动删过 vendor/ 里的某个包,它照样照常显示版本号。最稳妥的做法是维护前先跑一次 composer install --dry-run,看是不是“Nothing to install or update”。如果有差异,说明环境已经不干净了。另一个隐藏坑:show 命令不校验包文件完整性,哪怕 vendor/autoload.php 被人误删,它依然会报平安。所以,依赖 composer show 的结果前,最好先确保 composer.lock 与 vendor/ 目录一致。

售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8