composer如何查看包更新日志_composer changelog查看方法【追踪】

3次阅读

composer outdated 仅比对版本号并输出静态快照,不提供更新日志、发布时间、bug修复或bc破坏信息,也不联网查github releases或解析changelog.md。

composer如何查看包更新日志_composer changelog查看方法【追踪】

composer outdated 只能看“有没有新版本”,看不到日志

这是最常被误解的一点:composer outdated 甚至 composer show --outdated 都不提供任何更新日志内容——它只比对版本号,输出类似 monolog/monolog 3.4.0 → 3.5.0 这样的静态快照。发布时间、修复了哪些 bug、是否破坏 BC,全都不在输出里。

  • 它不联网查 github Releases,也不解析项目根目录下的 CHANGELOG.md
  • 它读的是本地 composer.lock 和 Packagist 的元数据缓存,连 tag 时间戳都没有
  • 如果你依赖 "monolog/monolog": "^3.4",而 v3.5.0 刚发布 2 小时,outdated 能立刻显示,但你依然不知道这版修了啥

查 changelog 的实际路径只有两条:GitHub + 人工定位

Composer 不负责分发变更说明,维护者写在哪,你就得去哪找。主流开源包基本都把更新日志放在两个地方:

  • GitHub Releases 页面:访问 composer show monolog/monolog 输出的 source 地址(比如 https://github.com/Seldaek/monolog),再点 Releases 标签页,按 tag 翻 v3.5.0 的发布说明
  • 仓库根目录的 CHANGELOG.md:有些项目(如 laravel)习惯把完整日志放这里,可直接用 curl -s https://raw.githubusercontent.com/laravel/framework/11.x/CHANGELOG.md | head -20 快速扫一眼最新段落

注意:composer show 输出的 versions 列表只是当前源里“能装的版本”,不是“已发布的全部版本”;某些包会删旧 tag 或用私有分支,这时候 GitHub 页面可能比 Packagist 更准。

自动化?得自己补工具链,别指望 composer 原生支持

截至 2026 年 2 月,Composer 仍无内置命令调用 GitHub API、渲染 Markdown 或 diff 版本间变更。真要批量查日志,常见做法是组合脚本:

  • composer show --format=json vendor/package 提取 source.url 和当前 version
  • 调用 gh api repos/{owner}/{repo}/releases/tags/v{new_version}(需安装 GitHub CLI)
  • 或用 git log v3.4.0..v3.5.0 --oneline -- changelog.md(前提是克隆了源码)

这类方案要处理权限、网络超时、tag 命名不规范(比如用 3.5.0 而非 v3.5.0)等问题,小项目手动点两下反而更快。

安全更新和重大变更根本不会自动标出来

composer outdated --security-only 能标出有已知漏洞的包,但它只告诉你“该升”,不告诉你“为什么该升”——CVE 编号、影响范围、是否需要代码调整,全得你点进对应 issue 或安全公告里看。

  • 比如 symfony/http-Foundation 某次 patch 升级可能修复 SSRF,但 outdated 输出里就一行 5.4.33 → 5.4.34 [security]
  • 主版本升级(如 laravel/framework 10.x → 11.x)更危险:--major-only 参数只过滤输出,不阻止你误执行 composer update
  • 最易忽略的是 fork 包:你用的是公司内网 gitlab 上的 myorg/monologoutdated 仍拿 Packagist 的原版比,结果“没更新”其实是假象

真正关键的更新细节,永远藏在维护者写的文字里,而不是 Composer 的命令行输出中。

text=ZqhQzanResources