Composer无内置命令查看包更新记录,需结合composer.json字段定位仓库、查阅CHANGELOG.md或GitHub Releases,或用git log对比版本差异,配合composer outdated筛选待升级包。

Composer 本身不提供直接查看包版本更新记录或变更日志(changelog)的内置命令。它只管依赖解析、下载和安装,不抓取、不存储、也不展示第三方包的 CHANGELOG.md 或 GitHub Releases。所谓“查看更新记录”,实际是组合外部工具 + 包自身维护习惯的协作过程。
如何定位某个包的官方变更日志地址
大多数主流 PHP 包会把变更日志放在标准位置,但需手动确认:
- 优先查包的
composer.json里是否有"support": { "source": "..." }或"homepage"字段 —— 这通常是 GitHub/GitLab 仓库地址 - 访问该仓库,找根目录下的
CHANGELOG.md、CHANGELOG、releases标签页,或docs/changelog.md - 部分包(如 Laravel、Symfony)把日志放官网文档中,例如
https://laravel.com/docs/11.x/releases - 若包未维护日志,
git log是唯一可靠方式(见下一条)
用 git log 快速对比两个版本间的提交差异
当你已通过 composer show vendor/package 知道当前装的是 v2.3.1,想看升级到 v2.4.0 改了什么,最准的方式是拉源码比提交:
cd vendor/vendor/package git fetch --tags git log v2.3.1..v2.4.0 --oneline --no-merges
注意:vendor/ 下的包默认是 shallow clone,可能没完整历史。若报错,先运行 git fetch --unshallow(仅限 Git ≥ 2.22)或删掉重装:composer install --no-cache。
用 composer outdated 配合 --direct 和 --minor-only 判断是否值得升级
composer outdated 不显示日志,但能帮你聚焦真正需要关注的包:
-
composer outdated --direct:只列出你composer.json显式声明的包,排除间接依赖干扰 -
composer outdated --minor-only:过滤掉 major 升级(通常含破坏性变更),专注安全补丁和小功能迭代 - 配合
--format=json可管道给脚本处理,例如提取所有可 minor 升级的包名再批量查其 release 页面
自动化查 changelog 的现实限制
目前没有通用、可靠的 Composer 插件能自动抓取并渲染所有包的日志。原因很实在:
- 日志格式五花八门:Markdown / HTML / plain text / Confluence / Notion,甚至压根不存在
- GitHub API 有速率限制,且私有包无法访问
- 包作者可能把
v3.0.0发在分支main,而v2.x维护在2.x分支,自动匹配易出错
所以,别指望一个命令解决全部——老老实实打开 GitHub、读 CHANGELOG.md、扫一眼 git log,仍是目前最稳的路径。










