Composer本身不提供更新日志提取能力,outdated、show、update --dry-run均不联网查GitHub或解析CHANGELOG.md;查看日志需手动通过composer show获取source/homepage字段,再跳转对应仓库releases页或官方文档站。

Composer 本身不提供任何更新日志提取能力——composer outdated、composer show、composer update --dry-run 全都不含 changelog 内容,也不联网查 GitHub 或解析 CHANGELOG.md。 所有“查看更新日志”的需求,必须绕过 Composer 命令,直接对接源码仓库或维护者发布的结构化信息。
为什么 composer outdated 显示了版本号却看不到改了啥
它只做静态比对:读取本地 composer.lock 中的已安装版本,再查 Packagist 缓存里该包的最新稳定版 tag(如 v3.5.0),输出类似 monolog/monolog 3.4.0 → 3.5.0 的快照。不触发网络请求,不拉取 Git 提交,不解析 Markdown 文件。
- 看到
[security]标记,只说明 Packagist 标记了 CVE,但不会告诉你漏洞是否影响你的用法 - 版本号跳变(如
5.4.39 → 6.4.0)不代表自动兼容,outdated不校验你的 PHP 版本、扩展或依赖冲突 - 某些包删了旧 tag 或用了私有分支,Packagist 缓存可能滞后,
outdated显示的“最新版”甚至在 GitHub 上找不到对应 release 页面
怎么快速定位某个包的 CHANGELOG.md 或 Releases 页面
核心路径只有两条,且都依赖 composer show 输出的元数据:
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
- 先运行
composer show vendor/package-name,找到source字段(通常是 GitHub/GitLab URL)或homepage字段 - 若 source 是
https://github.com/monolog/monolog,直接拼成https://github.com/monolog/monolog/releases/tag/v3.5.0(注意加v前缀) - 若 homepage 是
https://laravel.com/docs,则去官网文档站查 “Laravel 11.x Changelog”,别在 GitHub 翻CHANGELOG.md——Laravel 官方已把变更日志迁出代码库 - 有些包没打 release tag,但根目录有
CHANGELOG.md:用curl -s https://raw.githubusercontent.com/vendor/package/main/CHANGELOG.md | head -30快速扫最新段落
如何判断一次更新是否真会影响你的代码
不能只看版本号或“Breaking Changes”标题,得锚定具体行为变更点:
- 升
guzzlehttp/guzzle从7.8.1 → 7.8.2?查 release notes 里有没有提到HttpClient::send()默认超时调整、重试逻辑变更 - 升
symfony/console从5.4 → 6.4?重点看6.4/CHANGELOG.md中Command::execute()返回值语义是否变化(比如int改为void) - 发现升级后日志字段名从
context变成extra?这不是 bug,是 Monolog v3 的 BC break,必须改调用方式,不能靠composer update --rollback解决 - 如果包没维护 CHANGELOG 或 release notes,唯一可靠方式是
git log v2.1.0..v2.2.0 --oneline src/(需克隆源码),但要注意它是否只改了测试或文档
自动化查日志的边界在哪
截至 2026 年 8 月,Composer 仍无内置支持。脚本化方案存在硬伤:
- GitHub CLI 调用
gh api repos/{owner}/{repo}/releases/tags/v{version}要求你登录、处理 rate limit、适配v3.5.0和3.5.0两种 tag 命名习惯 - 用
git log差分需要本地克隆完整仓库,CHANGELOG.md若不在 diff 范围内(比如被移动到docs/changelog.md)就漏掉 - 私有包、GitLab 自托管、Bitbucket 仓库,URL 拼接规则完全不同,没法统一模板
- 最常被忽略的一点:很多包的“最新版”根本没写 changelog——只有一行 “Bug fixes and improvements”,你得自己翻 PR 列表

















