Composer无内置命令查看依赖更新日志,唯一可靠路径是用composer show -s获取source.url,再手动访问GitHub Releases或CHANGELOG.md页面。

Composer 没有内置命令能看更新日志——composer show --changelog、composer log、composer outdated --verbose 全部无效,执行即报错或静默忽略。唯一可行路径是:先用 composer show -s 拿源码地址,再手动查 GitHub Releases 或 CHANGELOG.md。
怎么拿到包的真实仓库地址
composer show -s vendor/package 输出的 source.url 是唯一可信入口,它指向安装时实际拉取的 Git 地址,比 homepage 或 support.source 更准。
- 如果返回
https://github.com/monolog/monolog.git,去掉末尾.git,拼成https://github.com/monolog/monolog/releases - 若
source.url为空,说明是 dist 安装(vendor/下无 .git),只能退而求其次查composer show vendor/package输出里的homepage字段 - 私有包或非 GitHub 托管的,得靠人工猜——比如把
git@gitlab.example.com:group/pkg.git转成https://gitlab.example.com/group/pkg/-/releases
GitHub 上该点哪个页面查日志
别点 “Code” 标签翻目录,直接点右上角 Releases 标签页——90% 的关键信息都在这里。
- 找和你要查的版本号完全匹配的 tag(如
v3.5.0),不是main或dev分支 - 如果
https://github.com/vendor/package/releases/tag/v3.5.0返回 404,改试/blob/main/CHANGELOG.md(注意大小写,也可能是/blob/master/changelog.md或/blob/6.x/CHANGELOG.md) - Symfony 等项目按分支维护日志,路径中的分支名必须和版本对齐,比如
v6.4.8对应/blob/6.4/CHANGELOG.md
怎么对比两个版本之间具体改了啥
这一步只在满足全部条件时才可行:source.url 非空(即以 source 方式安装)、你知道精确的旧/新版本号(比如从 composer outdated 抄来的 v3.4.0 → v3.5.0)。
- 进包目录执行:
git -C vendor/vendor/package diff --stat v3.4.0..v3.5.0 - 加
--name-only只看改动文件列表;加-- CHANGELOG.md专注日志变更 - 若报
fatal: ambiguous argument,先运行git -C vendor/vendor/package fetch --tags - 没装 source?临时克隆:
git clone https://github.com/vendor/package.git /tmp/pkg && cd /tmp/pkg && git diff --stat v3.4.0..v3.5.0
为什么不能只信 composer outdated 的输出
composer outdated 只静态比对 composer.lock 和 Packagist 最新稳定版,不联网查 GitHub,也不解析任何日志。
- 它不会告诉你
v3.5.0是否修复了log() throws on null context这类关键 bug - 不标出 BC break,比如
LoggerInterface::log()签名是否变更 - 某些包发了
v3.0.0-rc1,但 Packagist 默认不索引预发布版,outdated就不会显示它 - 加
--direct可过滤掉子依赖,只看你自己require的包;加-f json方便脚本提取版本号喂给后续工具
真正容易被忽略的是:很多包的 CHANGELOG.md 更新滞后、格式混乱,或只覆盖主版本;而 GitHub Releases 是每个 tag 的正式发布快照,含作者手写的升级提示、破坏性变更标注、diff 链接——优先点开它,不是“Code”页。


















