composer怎么查看包的详情_composer查看依赖详细信息

2次阅读

直接查已安装包元数据用 composer show vendor/package-name,输出版本、描述、作者、许可证、homepage、source 和 autoload 等字段;加 -s 查 autoload/scripts,–tree 查依赖树,–format=json 配合 jq 提取字段。

composer怎么查看包的详情_composer查看依赖详细信息

直接查已安装包的完整元数据

运行 composer show vendor/package-name 是最直接的方式,它会输出该包的版本、描述、作者、许可证、homepage(通常是文档链接)、sourceautoload 配置等全部字段。比如 composer show monolog/monolog 就能立刻看到它的 PSR-4 映射规则和依赖列表。

  • 必须带 vendor/name 格式,漏掉 vendor(如只输 framework)会报错 Package framework not found
  • 不加包名时 composer show 只列顶层依赖(require 里声明的),不是所有已安装包
  • homepage 字段大概率就是官方文档地址;若为空,可顺手看 source 或去 Packagist 页面补全

看 autoload 和 scripts 配置调试类找不到或命令失败

类加载出错、自定义命令执行不了?关键要看 autoloadscripts —— 这些默认不显示,得加 -s(即 --show-config):

composer show -s monolog/monolog 输出里就能确认 "Monolog": "src/" 是否生效,以及 scripts 里有没有注册 post-install-cmd 这类钩子。

  • 这个选项在 Composer 2.2+ 才稳定支持,旧版会提示未知参数
  • 别用 grep autoload 粗暴匹配,因为 JSON 结构可能跨行;-s 是专为人工调试设计的可读格式
  • 如果 autoload 里没映射你用的命名空间,类就一定找不到——这是 80% 的“class not found”根源

查依赖树:确认谁装了它、有没有冲突

想知道某个包为什么被拉进来,或者怀疑它引了多个版本的 psr/log,就用 --tree

composer show --tree laravel/framework 会以缩进形式展示完整依赖路径,比如:

laravel/framework v10.48.12 └── symfony/console v6.4.7     └── psr/log 3.0.0
  • 它只显示当前已解析并安装的路径,require-dev 里的包若没被实际 require,可能不会出现
  • 想查反向依赖(谁依赖了这个包),换命令:composer prohibits --tree vendor/package-name
  • 输出太长时,直接管道过滤:composer show --tree | grep -E "(monolog|psr)"

自动化提取字段:用 JSON + jq 精准拿 license 或 version

CI 脚本里要批量审计许可证、比对版本号,靠人眼翻文本不现实。用 --format=json 配合 jq 最稳:

composer show --format=json guzzlehttp/guzzle | jq -r '.license' 输出 MITjq -r '.require."php"' 能取最低 PHP 版本要求。

  • 常见字段名是 nameversiondescriptionhomepagerequire(注意不是 requires
  • 本地没装 jq?那就只能 grep -A1 "license" 硬来,但容易断行或漏字段,尤其当值含换行时
  • --all 参数适合选版本或查废弃提示,比如 composer show -a symfony/http-kernel 列出所有历史 tag

真正麻烦的不是命令记不住,而是搞不清「查的是已安装的包」还是「查远程最新信息」——前者不用参数,后者必须加 --remote;还有人卡在 --tree 不显示 dev 依赖,结果以为依赖没装上。这些边界条件,比语法本身更常导致排查绕弯。

text=ZqhQzanResources