composer如何查看某个包的所有历史发布记录_composer版本列表查询方法【实战】

9次阅读

不能。composer show -a 仅显示已安装包的依赖树,不提供历史版本;composer show –all 仅列出 Packagist 索引的稳定/预发布版本,不含已删、弃用或未同步的 tag;完整 tag 需查源码仓库。

composer如何查看某个包的所有历史发布记录_composer版本列表查询方法【实战】

composer show -a 能查到所有历史版本吗

不能。composer show -a 只显示当前 composer.lock 中已安装的包及其依赖树,不提供历史发布记录。它甚至不会列出未安装但可安装的版本。

用 composer show –all 查看包的全部可用版本

composer show --all 是最接近需求的内置命令,但它实际只列出 Packagist 上该包「当前标记为稳定/预发布」的版本(即 distsource 可下载的版本),不包含已删除、被弃用或仅存在于 git tag 但未同步到 Packagist 的版本。

  • 必须指定包名,例如:composer show --all monolog/monolog
  • 输出按版本号倒序排列,但不显示发布时间、tag 提交哈希或是否已废弃
  • 若提示 Package not found,说明该包未在 Packagist 注册,或名称拼写错误(注意大小写和 vendor 名)
  • 该命令依赖本地配置的仓库源,默认走 https://packagist.org;如使用私有仓库,需确保 composer config repos.xxx 已正确设置

想看完整 tag 列表?直接查 Packagist API 或源码仓库

Packagist 不提供「所有历史 tag」的完整列表,它的 API /packages/{vendor}/{package}.json 返回的 versions 字段只含它索引过的版本。真正全量的发布记录,得去上游 Git 仓库看:

  • 先用 composer show -i {package} 查源码地址(看 source 字段)
  • 再访问对应 github/gitlab 页面,点 Tags 页签,或执行:
    git ls-remote --tags https://github.com/{vendor}/{repo}.git
  • 注意:有些项目用 git archivedist 方式发布,其 tag 可能比 Packagist 多(比如 CI 自动打的 v1.2.3+commitabc
  • 部分包启用了 Packagist 的 auto-updates,但若作者手动删了旧 tag,Packagist 不会自动清理缓存,此时 API 和网页显示可能滞后

为什么 packagist.org 网页版不显示全部版本

Packagist 主要服务 Composer 安装逻辑,不是版本归档平台。它只索引满足以下条件的版本:

  • Git tag 符合语义化版本格式(如 v1.2.31.2.3,不包括 release-1.2
  • 对应 commit 存在 composer.jsonname 字段匹配
  • 未被作者在 Packagist 后台手动隐藏(abandonedprivate 设置)
  • 没有触发自动过滤规则(如含 dev- 前缀的 tag 默认不索引)

所以看到的「版本列表」本质是「Composer 能 install 的候选集」,不是 Git 全量 tag 快照。

text=ZqhQzanResources