composer remove 会自动卸载包并更新 composer.json,从 vendor 目录删除代码、移除 require/require-dev 条目、重写 composer.lock;它执行完整反向安装流程,非简单删除,且需指定完整包名。
composer remove 会自动卸载包并更新 composer.json
执行 composer remove vendor/package-name 不仅从 vendor/ 目录删掉对应代码,还会从 composer.json 的 require 或 require-dev 中移除该条目,并重写 composer.lock。它不是简单地 rm -rf,而是完整反向安装流程。
- 必须指定完整包名(如
monolog/monolog),不能只写monolog - 如果包同时出现在
require和require-dev中,需手动确认或先检查composer show - 执行后不会自动清理 autoload 下的类映射,但下次
composer dump-autoload或运行时自动加载器重建会同步生效
删除后 class not found 错误通常是因为残留引用
卸载成功不代表代码能立刻跑通——旧代码里可能还留着 use Vendor\Package\Class;、new PackageClass() 或配置文件中的服务定义。这类错误不是 composer remove 没生效,而是应用层没清理干净。
- 搜索项目中所有
.php文件,grepVendor\\Package或包名关键词 - 检查
config/、app/Providers/、tests/等目录下是否注册了该包的服务或 Facade -
composer dump-autoload -o后再试,避免因 autoload 缓存导致误判
想删包但保留 composer.json 条目?别用 remove
composer remove 的设计目标就是“彻底反安装”。如果你只是临时禁用某个包(比如调试时屏蔽日志驱动),不该删它,而应: