composer怎么查看更新日志_composer查看包版本更新信息

2次阅读

composer show -a 仅列出 packagist 上所有已发布版本号,不提供变更日志、时间戳、提交哈希或链接;查更新内容需访问包仓库的 github releases、changelog.md 或用 git log/diff 对比版本。

composer怎么查看更新日志_composer查看包版本更新信息

composer show -a 只列版本,不等于有更新日志

Composer 本身不提供查看变更日志(changelog)的能力,composer show -a 输出的只是 Packagist 上已发布、未被废弃的所有版本号,比如 2.8.02.9.13.0.0-rc1,但它不会告诉你这两个版本之间改了什么、修复了哪个 issue、是否破坏了 API。

  • 它依赖本地缓存(~/.composer/cache/repo/https---packagist.org/),可能比实际发布晚几小时
  • 不区分轻量 tag 和附注 tag:如果作者只推了 v2.9.0^{}(附注 tag),而没推 v2.9.0(轻量 tag),composer show -a 就看不到这个版本
  • 输出里没有时间戳、没有提交哈希、没有链接 —— 它不是 changelog 查看器,只是版本快照浏览器

查更新记录得靠包自己维护的文档或 Git

真正能回答“v2.9.0 相比 v2.8.0 改了啥”的,只有包作者是否在 github 上写了 CHANGELOG.md、打了 Release、或在 releases 页面填了描述。Composer 不抓取也不渲染这些内容。

  • 优先打开 https://packagist.org/packages/{vendor}/{package} → 点 “Source” 链接跳转到 GitHub/gitlab 仓库
  • 直接访问 https://github.com/{vendor}/{package}/releases,找带绿色 “Latest release” 标签的条目
  • 若仓库有 CHANGELOG.md,通常在根目录或 docs/ 下;没有的话,只能点开每个 Release 看 “What’s Changed” 折叠区
  • 部分包(如 symfony/*)会把 changelog 搬到官网文档页,比如 https://symfony.com/doc/current/components/changelog.html

用 git log 或 diff 对比两个版本(需 prefer-source)

如果你用 "prefer-source": true 安装过该包(或手动删掉 vendor/{vendor}/{package} 后重装),本地就有 Git 克隆副本,这时才能用 Git 命令看差异。

  • 先确认源类型:composer show {vendor}/{package} | grep source,输出含 "type": "git" 才有效
  • 查两个版本间提交:git -C vendor/{vendor}/{package} log --oneline v2.8.0..v2.9.0
  • 看文件变动范围:git -C vendor/{vendor}/{package} diff --stat v2.8.0..v2.9.0
  • 注意:tag 名必须完全匹配,v2.9.02.9.0 在某些仓库不等价;若提示 tag 不存在,先 git -C vendor/{vendor}/{package} fetch --tags

别信 composer outdated 的“最新版”,它不反映真实兼容性

composer outdated 显示的“latest”是满足你当前 composer.json 中版本约束(如 "^2.0")的最高稳定版,不是全网最新版。它甚至不联网实时查,只读本地锁文件和缓存元数据。

  • 例如你写 "monolog/monolog": "^2.0"composer outdated 就不会显示 3.5.0,哪怕它已发布 —— 因为不兼容
  • --all 会列出 3.5.0,但旁边会标 not upgradable,不是 bug,是约束机制生效
  • 它不校验 PHP 版本、扩展依赖是否满足新版本要求;composer update 时才真正做兼容性检查,可能失败
  • 想预判升级风险?先 composer update --dry-run {package},再结合 GitHub Release 的 “Breaking Changes” 小节交叉验证

更新记录从来不在 Composer 里,而在包的 Git 仓库、Release 页面或作者写的文档中;工具只负责“装”,不负责“讲”。漏掉 changelog 直接升级,是最常见的线上事故起因之一。

text=ZqhQzanResources