不能,composer show --available 不会列出所有包,它仅查询 packagist 公开索引的前 100 个包(按字母序),不支持分页、过滤,也不包含私有仓库或自定义源中的包。

composer show --available 会列出所有包吗?不会,它只查 Packagist 上的公开包
执行 composer show --available 并不会返回“所有 Composer 包”,而是向 Packagist.org 发起一次 API 查询,获取其索引中当前可检索的公开包列表(不含私有仓库、VCS 包或自定义 repos)。这个列表动辄数百万,实际输出会被截断——Composer 默认只显示前 100 个(按字母序),且不支持分页或过滤。
常见误用场景:
- 想搜“带 cache 的包”,输
composer show --available | grep cache→ 基本没用,因为默认输出是表格格式,grep匹配不到关键词 - 在 CI 中依赖该命令判断包是否存在 → 不可靠,结果非实时、无状态、不可重入
- 以为能查到自己配置的 private repo 里的包 → 不会,除非你额外用
composer config repositories.显式添加并启用
查某个具体包的所有可用版本,必须用 composer show -a vendor/package
--available 是全局开关,但对单个包无效;真正要查某包的全部历史版本(含 dev 分支、RC、alpha),得用 -a(即 --all)加包名。这个参数强制跳过本地缓存,直连 Packagist API。
关键行为差异:
- 不加
-a:只显示vendor/composer/installed.json或本地缓存里已知的版本(可能缺新 tag) - 加
-a:每次请求都走网络,返回versions字段完整数组,如["3.5.0", "3.4.1", "dev-main", "2.x-dev"] - 若网络不通或 Packagist 被屏蔽,命令会卡住几秒后报错:
Could not fetch packages information
示例:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
composer show -a monolog/monolog
只提取纯净版本号,别硬 parse 表格输出
默认表格输出含描述、作者等冗余字段,不适合脚本处理。直接用 --format=json 配合 jq 最稳:
- 有 jq:
composer show -a --format=json monolog/monolog | jq -r '.versions | join("\n")' - 没 jq(Linux/macOS):
composer show -a monolog/monolog | sed -n 's/^[[:space:]]*versions:[[:space:]]*//p' | tr ',' '\n' | sed 's/^[[:space:]]*//; s/[[:space:]]*$//' - Windows PowerShell 用户注意:
tr和sed不原生支持,建议用--format=json+ConvertFrom-Json
别用 composer show monolog/monolog | head -n 20 之类方式凑合——表格列宽动态变化,versions 行位置不固定。
查某个版本的 autoload 和依赖结构,得指定版本号再加 -s
很多人以为 composer show -s vendor/package 就能看 autoload,其实它只显示根项目(composer.json 所在目录)的配置。要查某包某版本的 autoload 映射或 require 列表,必须带上版本号:
-
composer show -s monolog/monolog 3.5.0→ 输出该版本的autoload、require、type等元数据 -
composer show -s monolog/monolog dev-main→ 查开发分支的自动加载规则,这对调试自定义命名空间很有用 - 不指定版本时加
-s,只会显示你当前已安装的那个版本的配置,不是最新版
这个细节容易被忽略:autoload 规则可能随版本变更,比如 v2 和 v3 的 PSR-4 映射路径不同,仅靠看文档不如直接 show -s 实锤。










