composer怎么查看包的远程信息_composer show -a 详细输出【详情】

2次阅读

composer show -a 只显示已安装包的完整字段(含 source/dist),未安装包需指定包名如 composer show vendor/package -a 才能查远程信息;source 字段为空因默认用 dist,仅开发版或私有包等才可能有 source。

composer怎么查看包的远程信息_composer show -a 详细输出【详情】

composer show -a 查不到远程仓库信息?先确认包是否已安装

执行 composer show -a 时,它只显示当前项目中已安装的包的详细信息(包括 sourcedisttype 等),不会拉取未安装包的远程元数据。如果你刚加了 require 但还没 composer installcomposer show -a 就根本看不到那个包。

  • 已安装:会显示 source 字段(如 "type": "git", "url": "https://github.com/monolog/monolog.git", "reference": "..."
  • 未安装:直接不出现,或报错 Package not found
  • 想查未安装包的远程信息,得用 composer show vendor/package --all(注意加 --all,且包名必须准确)

composer show –all 和 composer show -a 是一回事吗?

是的,-a--all 的缩写,两者完全等价。但要注意:这个 --all 指的是「显示所有可用字段」,不是「显示所有包」——它仍只作用于已安装或明确指定的包,不会列出 packagist.org 上全部包。

  • composer show -a → 显示所有已安装包的完整字段(含 source/dist)
  • composer show monolog/monolog -a → 即使该包未安装,也能查到其最新稳定版的远程信息(前提是 packagist 可访问)
  • composer show -a 不带包名时,若项目无依赖,输出为空;不是“没生效”,是真没东西可show

为什么 source 字段有时是 NULL

Composer 默认优先使用 dist(zip/tar 包),只有在 config.prefer-stable: false 或显式要求开发版(如 "dev-main")时,才可能触发 source(即 git clone)。即使有 source,也取决于包作者是否在 composer.json 中声明了 source 部分。

  • 多数稳定版包的 source 字段为空,因为 packagist 生成的元数据默认只保留 dist
  • 如果需要强制走 source,可临时加 --prefer-source,但下次 composer install 仍按配置来
  • 某些私有包或本地 path repo 会始终显示 source,因它们绕过了 dist 分发机制

想看 GitHub 最新 commit 或 license 呢?show -a 不够用

composer show -a 输出的是 Composer 自己缓存/解析的元数据,不是实时抓取 GitHub API。它里面的 license 来自 composer.jsonsource.reference 是当时发布时打的 tag 或 commit hash,不代表 HEAD。

  • 要看真实仓库最新状态,得手动打开 source.url 字段里的链接,或用 git ls-remote 查 refs
  • 自动化获取 license 文本?别指望 composer show —— 它不下载文件,只读元数据
  • 遇到 source.urlhttps://api.github.com/... 这种 API 地址?说明包注册时用了 GitHub 的自动发现,但实际 clone 地址还是 https://github.com/xxx/yyy.git,需自己替换

事情说清了就结束

text=ZqhQzanResources