composer show vendor/package --latest 可直接显示已安装版本及最新稳定版(含版本号和发布日期),是判断是否需更新的最实用方法;更新记录需查看包仓库的 CHANGELOG.md 或 Releases 页面。

composer show -l 看不到更新记录?用 composer show 加 --all 和 --latest
Composer 本身不提供类似 Git 的 changelog 查看命令,composer show 默认只显示已安装版本,不展示历史更新或变更日志。想快速确认某个包有没有新版本、当前装的是不是最新,得组合参数:
-
composer show vendor/package --all:列出该包所有可用版本(含未安装的),但不标出哪个是最新 -
composer show vendor/package --latest:直接显示已安装版本 + 最新稳定版(含版本号和发布日期),这才是最实用的判断依据 - 如果返回
latest : none,说明该包在当前 stability 设置下无更新(比如你设了"minimum-stability": "stable",而新版本只是beta)
更新记录在哪找?别指望 Composer,去包的 GitHub/GitLab 仓库看 CHANGELOG.md 或 Releases 页面
Composer 不托管、也不解析 changelog,它只管下载和依赖解析。所谓“更新记录”,实际是包作者维护的外部文档:
- 绝大多数主流包(如
symfony/console、monolog/monolog)会在根目录放CHANGELOG.md,GitHub 上点开就能看 - 更规范的做法是看 GitHub/GitLab 的
Releases页面(路径通常是https://github.com/vendor/package/releases),那里有带版本号、日期、改动摘要的正式发布记录 - 有些包用
UPGRADE.md或UPGRADING.md记录破坏性变更,升级前必须扫一眼
composer outdated 显示一堆包,怎么快速定位关键更新?加 --direct 和 --minor-only
composer outdated 默认列出所有依赖(包括子依赖),信息过载。真实场景中你只关心自己 require 的包,以及是否涉及兼容性风险:
-
composer outdated --direct:只显示composer.json里直接声明的包,过滤掉间接依赖 -
composer outdated --minor-only:跳过主版本升级(如 2.x → 3.x),只显示小版本/补丁更新(如 2.5.1 → 2.5.2),适合日常巡检 - 两者可叠加:
composer outdated --direct --minor-only,结果干净且有操作意义 - 注意:如果某包显示
dev-main或dev-develop,说明你装的是开发分支,--latest可能不生效,得手动查 commit log
为什么 composer update 后没反应?检查 composer.lock 和 minimum-stability
执行了 composer update vendor/package 却发现版本没变,常见原因不是命令错,而是约束没松动:
-
composer.lock锁死了版本,如果没改composer.json里的版本约束(比如写死"^2.4"),update就不会越界 -
minimum-stability设为stable时,即使作者发布了3.0.0-RC1,也不会被拉下来;临时调成RC再试,但上线前务必改回 - 运行
composer why-not vendor/package:3.0.0能看到具体哪个依赖在阻止升级(比如另一个包要求"vendor/package": "^2.0")
composer outdated 是快照,Releases 页面才是真相。真要升级,先看 changelog 里有没有 BC break,再决定要不要动 composer.json 的约束。










