composer show 和 outdated 不提供变更日志,需手动通过 source、homepage、GitHub Releases、分支 CHANGELOG.md 或 git log 查看;官网文档页日志常被忽略但最可靠。

composer show 不显示变更日志,它只读 vendor/composer/installed.json,里面没有提交记录、没有功能说明、也没有修复列表。
composer outdated 只告诉你“能升到哪版”,不告诉你“改了什么”
- 它输出形如
monolog/monolog 3.5.0 → 3.6.0的对比,但不会附带链接、摘要或变更类型 - 默认只检查稳定版本;加
--all会包含dev-main等预发布版,但依然无日志 - 如果包没打 Git tag、没维护
CHANGELOG.md、也没在 GitHub/GitLab 发布 release,那这个版本根本就没有标准日志入口
常见错误现象:
- 看到
symfony/http-foundation 6.4.7 → 6.4.8就直接update,结果发现中间有个 BC break 没注意到 - 去 Packagist 页面点开包详情,看到的 “Latest release” 时间是 2026-08-10,但这只是 tag 推送时间,不是变更内容发布时间
查日志得手动定位源头,三个靠谱路径
- 先用
composer show vendor/package看source和homepage字段:-
source通常是 Git 仓库地址(如<a href="https://www.php.cn/link/e9903368633b9973e4d342d3bd045d07">https://www.php.cn/link/e9903368633b9973e4d342d3bd045d07</a>) -
homepage往往指向文档站(如<a href="https://www.php.cn/link/ad40dc3cb1f8f6b6cf70fcdfd6c44a9c">https://www.php.cn/link/ad40dc3cb1f8f6b6cf70fcdfd6c44a9c</a>),那里常有独立维护的 changelog 页面
-
- 拼 GitHub Releases URL:
- 标准格式是
<a href="https://www.php.cn/link/adefdb0c97ab92a9e8d1437a75d6e27e">https://www.php.cn/link/adefdb0c97ab92a9e8d1437a75d6e27e</a> - 若目标版本是
6.4.8,优先查<a href="https://www.php.cn/link/e9903368633b9973e4d342d3bd045d07/blob/6.4/CHANGELOG.md">https://www.php.cn/link/e9903368633b9973e4d342d3bd045d07/blob/6.4/CHANGELOG.md</a>(注意分支名要匹配)
- 标准格式是
- 对私有包或非 GitHub 托管的项目:
-
composer info vendor/package查support.source或support.docs - 若为空,只能翻该包的
vendor/vendor/package/CHANGELOG.md(如果存在且被提交过)
-
git log 是最硬核但最可控的方式
- 进入
vendor/vendor/package目录后,执行:git log v3.5.0..v3.6.0 --oneline CHANGELOG.md
——前提是该包用 Git 管理、且CHANGELOG.md在这两个 tag 之间被修改过 - 更保险的做法是:
git log v3.5.0..v3.6.0 --oneline -p | grep -A5 -B5 "function|fix|break|deprecate"
直接扫 commit message 里的关键词,绕过日志文件是否规范的问题
别指望 composer update --dry-run 输出变更摘要——它连远程仓库都不碰,只做本地依赖图求解。
真正容易被忽略的一点:很多包的变更日志不在 GitHub,而在其官网文档页;而 composer show 输出的 homepage 字段,就是唯一可靠线索。


















