Composer无内置命令查看changelog,因composer show仅读取installed.json和composer.lock的静态快照,忽略support.changelog字段;需用composer show -s获取源码地址后,手动访问GitHub的CHANGELOG.md或releases页面。

Composer 没有内置命令能直接查看变更日志(changelog)——你必须离开 CLI,手动去包的源码仓库查。
composer show 不显示 changelog 的根本原因
它只读取 vendor/composer/installed.json 和 composer.lock 中的静态快照,内容来自 Packagist 的元数据缓存,不含任何提交记录、版本差异或维护者撰写的更新说明。即使 composer.json 里写了 "support": {"changelog": "https://..."},composer show 也完全忽略该字段。
常见错误现象:composer show monolog/monolog 后反复翻输出找 “changelog” 字段,结果什么都没有——因为压根没这个字段。
-
composer show vendor/package:只输出名称、已安装版本、描述、依赖 -
composer show vendor/package --latest:多加一列最新稳定版和发布日期,仍无变更内容 -
composer outdated:只对比版本号,连“修复了什么”都不提
如何快速定位 CHANGELOG.md 或 Releases 页面
先用 composer show vendor/package -s 获取源码地址,再手动拼出标准路径,这是最省时间的手动流程:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 运行
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—— 大多数主流包把带格式的更新摘要放在这里 - 若
composer show输出里有homepage字段,优先打开它,很多项目把 changelog 放在官网文档页(如 Laravel 的laravel.com/docs/11.x/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
为什么有些包的 CHANGELOG 难找甚至没有
这不是你的问题,是维护者习惯问题。容易踩的坑包括:
- 包作者把变更记录全塞进 git tag 的注释里,没单独建文件——这时用
git log --oneline v1.2.0..v1.3.0查差异更靠谱 - CHANGELOG 放在非默认分支(比如
stable分支),而你默认查的是main - 私有包或内部组件压根没维护 changelog,只能翻
git log或问同事 - 有些包用
UPGRADE.md或UPGRADING.md记录破坏性变更,升级前必须扫一眼
最稳的方式永远是:先 composer show 看源码地址,再打开浏览器,手动点开 releases 标签页——人类肉眼识别比自动化更可靠,尤其对小众包。

















