Composer 本身并没有内置一条可以直接查看 changelog 的命令——这点需要先明确。所谓composer show --changelog或composer log都是不存在的,你必须离开命令行,去包的源码仓库手动查。

Composer 不提供查看变更日志(changelog)的命令,所有所谓 composer show --changelog 或 composer log 都是不存在的——你必须离开 CLI,去包的源码仓库手动查。
为什么 composer show 不显示 changelog
它只读取 vendor/composer/installed.json 和本地 composer.lock,内容来自 Packagist 的元数据快照,不含任何提交记录、版本差异或维护者撰写的更新说明。即使 composer.json 里写了 "support": {"changelog": "https://..."},composer show 也完全忽略该字段。
composer show vendor/package:只输出名称、已安装版本、描述、依赖composer show vendor/package --latest:多加一列最新稳定版和发布日期,仍无变更内容composer outdated:只对比版本号,连“修复了什么”都不提
怎么快速定位到 CHANGELOG.md 或 Releases 页面
先用 composer show 拿到源码地址,再拼出标准路径,这是最省时间的手动流程:
- 运行
composer show vendor/package -s,看source字段值,通常是https://github.com/vendor/package.git - 把
.git去掉,加上/blob/main/CHANGELOG.md(或/blob/master/CHANGELOG.md),例如:https://github.com/monolog/monolog/blob/main/CHANGELOG.md - 如果 404,改用
/releases路径,如https://github.com/monolog/monolog/releases—— 大多数主流包把带格式的更新摘要放在这里 - 若
homepage字段存在(composer show vendor/package输出里有),优先打开它,很多项目把 changelog 放在官网文档页
想比对两个版本间具体改了啥?得靠 Git
前提是该包是以 source 方式安装(即 prefer-source: true 或安装时加了 --prefer-source),否则 vendor/ 下只有 dist zip,没 git 历史。
- 确认安装方式:
composer show vendor/package看type是library还是project,再看source字段是否非空 - 进目录执行:
git -C vendor/vendor/package log --oneline v1.2.3..v1.4.0 - 看代码差异:
git -C vendor/vendor/package diff --stat v1.2.3..v1.4.0 - 如果没装 source,又急需 diff,可临时克隆:
git clone https://github.com/vendor/package.git /tmp/pkg && cd /tmp/pkg && git diff --stat v1.2.3..v1.4.0
Packagist 页面比 CLI 更全、更及时
当 composer show --latest 显示的“最新版”明显滞后,或你怀疑有隐藏 tag(比如预发布版、legacy 版),直接打开 https://packagist.org/packages/vendor/package,点 “Versions” 标签页:
- 能看到每个版本的发布时间、Git commit hash、是否 stable / legacy / dev
- 点击版本号,会跳转到对应 GitHub/GitLab 的 tag 页面,那里通常附带 release notes
- 私有包或未同步的包,Packagist 页面可能为空,此时只能靠
git ls-remote --tags repo-url直接查远端 tag 列表
自动化脚本至今无法可靠替代这一步——因为 changelog 的位置、格式、维护意愿,全由包作者决定,Composer 不强制也不归一。