composer outdated 命令用于列出项目中可更新的过期依赖包,显示当前版、最新稳定版及版本约束;支持 --direct、--all、--minor、--patch、--format=json 等选项,配合单包 update 更安全。

composer outdated 命令能快速列出项目中已过期的 Composer 包,帮你识别哪些依赖有新版本可用,是日常维护和安全升级的重要起点。
基础用法:查看所有可更新的包
在项目根目录下运行:
composer outdated它会显示当前安装版本、最新稳定版、以及是否为语义化版本(如 ^2.5.0)兼容的更新。默认只显示有新版且满足当前版本约束的包,不会强行推荐不兼容的大版本升级。
常用选项提升实用性
-
--direct:仅显示
composer.json中直接声明的依赖(忽略间接依赖),适合聚焦主控包 - --all:显示所有依赖(包括 dev-only 包),方便检查测试或构建工具是否过时
- --minor 或 --patch:分别限制只显示次版本或修订版本更新(跳过大版本),降低升级风险
- --format=json:输出 JSON 格式,便于脚本解析或集成到 CI 流程中
理解输出字段含义
典型输出类似:
symfony/console v5.4.31 v6.4.7 symfony/console (>=5.4)- 第一列:包名
- 第二列:当前安装版本
- 第三列:最新稳定版(满足你当前版本约束的前提下)
- 第四列:你的
composer.json中该包的版本约束
如果某包右侧显示 [not in require],说明它是被其他依赖引入的间接依赖,需通过升级其父包来更新。
配合 update 使用更稳妥
看到想升级的包后,不要直接 composer update 全量更新。建议:
- 先针对单个包升级:composer update vendor/package-name
- 加 --with-dependencies 同时更新其子依赖(谨慎使用)
- 升级前确保测试通过,尤其关注
CHANGELOG.md或 GitHub Release 中的 Breaking Changes
基本上就这些 —— 简单但容易忽略细节,定期跑一遍 outdated 是保持项目健康成本最低的方式之一。










