composer remove 会删除 vendor/ 下对应包目录、更新 composer.lock、重生成自动加载器、执行 uninstall 脚本;但不删 use 语句、自定义配置、数据库迁移等,需手动清理。
composer
remove 会删掉哪些文件和配置
执行
不只是从
里删掉包名,它还会:自动移除
下对应包的目录、更新
、触发自动加载器重生成(
等)、并运行该包注册的
脚本(如果定义了的话)。
但注意:它不会删你代码里手动写的
语句、不会清理你自定义的配置文件、也不会删除数据库迁移或资源文件——这些得你手动处理。
依赖被删后,若项目中仍有调用
,运行时直接报
如果该包提供 Artisan 命令(Laravel)或 Symfony Console 命令,命令类本身还在缓存里,下次执行会报错,需运行
或
默认不加
,只会删
区的包;要删
里的,必须显式加
remove 失败常见原因和绕过方式
最常卡在「依赖冲突」上:比如 A 包依赖 B,你删 B,但 A 还在
里,Composer 就拒绝操作,报错类似
。
先确认是否真不需要 A:运行
查谁在依赖它
如果 A 确实也要删,就一起删:
如果只是临时想跳过校验(不推荐),可用
先改
,再手动
,但容易留脏状态
遇到「package is not installed」却删不掉:可能是之前用
装的,而你要删的是 dev 包,记得加
删包后 autoload 没刷新?检查这三处
删完跑起来报
,大概率不是删失败,而是 autoloader 没生效。Composer 的自动加载分三层,每层刷新逻辑不同:
Composer 2.9.6
Composer 2.9.6 是 PHP 生态中高效、稳定的依赖管理工具。此版本在性能与兼容性上进一步优化,改进了依赖解析算法,提升大型项目中的安装与更新速度。它支持并行下载任务,显著减少等待时间,并增强了与私有仓库及镜像源的交互稳定性。同时修复了多项命令行交互与内存使用相关的缺陷,确保在复杂依赖关系下依然可靠运行。无论是新项目初始化还是现有系统维护,Composer 2.9.6 都能为开发者提供流畅、精准的依赖管理体验。
下载
只重新生成
,不碰
真正影响类加载的是
和
,它们只在
或
时重写
Laravel 用户还要清 config 缓存:
,否则旧的 service provider 可能还注册着已删包的逻辑
替代方案:不用 remove,也能“禁用”一个包
有些场景你并不想彻底删包,比如想临时验证某功能是否真依赖它,或团队还没统一升级策略。这时可绕过 Composer 的依赖解析:
注释掉
中对应行,再运行
(只更新 lock 文件,不重装 vendor)
用
(需 Composer 2.2+)把包加入黑名单,后续 install/update 都会报错阻止安装
直接删
目录 + 清 autoload 缓存,适合调试,但下次
会把它拉回来
真正删包这件事,核心就一条:别信
会帮你兜底所有引用。它只管 Composer 生态内的声明和文件,代码里漏掉的
、
、配置项、甚至数据库字段名,都得你自己扫一遍。
composer removecomposer.jsonvendor/composer.lockautoload_classmap.phpuninstalluseSomePackage\Foo::bar()Class not foundphp artisan clear-compiledphp bin/console cache:clearcomposer remove--devrequirerequire-dev--devcomposer.jsonRoot composer.json requires package-b, it is required by package-acomposer depends package-bcomposer remove package-a package-b--no-updatecomposer.jsoncomposer updatecomposer install --no-dev--devClass not foundcomposer dump-autoloadvendor/autoload_*.phpvendor/composer/autoload_*.phpvendor/composer/autoload_classmap.phpautoload_psr4.phpcomposer installcomposer updatephp artisan config:clearcomposer.jsoncomposer update --lockcomposer prohibit package-namevendor/package-namecomposer installremovenewuse