composer remove 在 composer 2.5+ 稳定内置并默认可用,低版本(2.2–2.4)需手动启用插件,2.2 前完全不支持;它仅移除 composer.json 中显式声明的包,不处理间接依赖,且必须配合 composer install 或 dump-autoload 才能完成物理清理与自动加载更新。

composer remove 不是“删文件”,而是反向安装——它只在 Composer 2.5+ 稳定可用,低版本会报 Command "remove" is not defined;直接手动删 vendor/ 或改 composer.json 会导致 autoload 错乱、composer.lock 哈希不一致、CI 构建失败。
composer remove 命令到底支不支持?看版本和配置
执行 composer remove vendor/package 报错 Command "remove" is not defined,大概率是版本太低或插件未启用:
- Composer 2.2 之前:完全不支持该命令
- Composer 2.2–2.4:实验性功能,默认禁用,需手动启用插件(如
composer global require composer-unused/composer-unused) - Composer 2.5+:稳定内置、默认开启,但要求 PHP ≥ 8.0,且
vendor/不能处于损坏状态
验证方式:composer --version。低于 2.5 时别硬试;若已升级却仍报错,运行 composer config --list | grep plugin 确认插件是否加载。
删不掉?先确认包是不是你“显式声明”的
composer remove 只操作 composer.json 的 require 或 require-dev 字段。如果它不在里面,命令会直接报错:Package "vendor/package" is not required in your composer.json——这说明它是被其他包带进来的“间接依赖”,不能靠 remove 清理。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 查它在哪声明:
grep -n "vendor/package" composer.json,注意检查require和require-dev两处 - 如果是
require-dev里的,必须加--dev参数:composer remove --dev vendor/package - 想确认谁在拉它进来:
composer depends vendor/package或composer show --tree vendor/package
删完 vendor 目录里还有文件?不是失败,是没走完流程
composer remove 在 2.5+ 默认会清理 vendor/ 下对应目录,但老版本或异常状态下(如部分安装失败),它只改 composer.json 和 composer.lock,不碰磁盘文件。残留不是 bug,是设计如此——真正触发物理删除的是后续的 composer install 或 composer update。
- 补一步强制同步:
composer install(按 lock 文件重建)或composer update --with-dependencies(更安全,只更新受影响分支) - 别手动删
vendor/vendor/package:Composer不感知,下次install可能跳过重装,导致 autoload 映射错乱 - 删完务必跑:
composer dump-autoload -o,否则旧类仍可能被加载(尤其用了 PSR-4 或 classmap)
删完还 Class not found?代码和配置里的引用才是真坑
composer remove 不会碰你的代码、配置或服务注册。最常出现的错误是 Class 'MonologLogger' not found 或类似 fatal error,说明:
- 代码里仍有
use或new调用,或某处用了class_exists()却没兜底 - 配置文件(如
config/logging.php、config/app.php)里还硬编码引用了该包 - 服务提供者中注册了该包的扩展或门面
人工扫三处:grep -r "use Monolog\" . --include="*.php"、检查配置项、确认服务提供者是否注销。这些不清理,上线就挂。










