composer不会自动移除无用依赖,需手动清理。应使用composer remove命令删除不再需要的包,并通过composer-unused等工具定期扫描冗余依赖,在CI中加入检查环节实现半自动化,确保依赖安全整洁。

Composer 默认在执行 composer update 时不会自动移除项目中已不再需要的依赖包。但你可以通过组合使用命令和配置,确保无用依赖被清理。
启用自动清理过期依赖
从 Composer 2.0 开始,引入了自动检测并提示废弃依赖的功能。虽然不会默认删除,但你可以开启更严格的依赖管理行为。
确保你的 composer.JSon 中启用了以下选项:
注意:目前 Composer 没有直接的配置项能“自动移除”无用依赖,必须主动触发检查和清理。
使用 composer remove 清理未使用的包
如果你已经从代码中移除了某个功能或库,应手动运行:
-
composer remove vendor/package-name—— 显式删除不再需要的包 - 这会同时更新
composer.json和composer.lock
这是最安全、推荐的做法,避免误删仍在使用的依赖。
定期运行分析命令识别冗余依赖
使用社区工具帮助发现未使用的包:
- composer-unused:扫描
composer.json中声明的依赖,判断哪些从未被引用 - 安装后运行:
composer-unused,它会列出疑似可删除的包 - 结合人工确认后,再执行
composer remove
结合 CI 或脚本实现半自动化清理
你可以在开发流程中加入检查步骤:
- 在 git 提交前或 CI 流程中运行
composer-unused - 发现问题时提醒开发者清理
- 不建议完全自动化删除,防止误操作
基本上就这些。Composer 不会在更新时自动移除依赖,是为了防止意外破坏项目。保持依赖整洁的关键是:及时手动清理 + 定期扫描 + 工具辅助。这样既能保证安全,又能维持项目的清爽。


