用 composer remove 批量删包最稳,它是 Composer 2.2+ 原子化卸载命令,自动同步更新 composer.json、vendor、composer.lock 和 autoload 映射,失败即回退,不残留半截状态。

用 composer remove 批量删包最稳,别手改 composer.json
Composer 2.2+ 内置的 composer remove 是唯一推荐的批量卸载方式——它不是“删文件”,而是原子化操作:自动从 composer.json 移除条目、删 vendor/ 对应目录、更新 composer.lock、重建 autoload 映射。失败即回退,不会留半截状态。
- 直接执行
composer remove monolog/monolog phpunit/phpunit spatie/laravel-backup,多个包名空格分隔,一次全清 - 开发依赖(
require-dev)会自动识别,不用加--dev;只有当同一个包同时出现在require和require-dev(极少见),才需显式指定 - 若某包被其他已安装包硬依赖(比如
symfony/http-client依赖guzzlehttp/guzzle),命令会中止并提示谁在引用它,这不是报错,是保护机制 - 想跳过实时重装?加
--no-update:只改composer.json,后续统一composer update,适合 CI 中分阶段操作
删完还报 Class not found?大概率是 autoload 没刷新
composer remove 不动你代码里的 use、new、配置项或服务提供者注册,但它依赖的 autoload 映射必须同步更新。Laravel 9+ 默认启用 --classmap-authoritative,删包后不 dump 就卡在旧映射里。
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
- 立刻执行
composer dump-autoload;如果用了优化模式,补上参数:composer dump-autoload --classmap-authoritative - 检查
composer.json的autoload.files或autoload.psr-4是否还硬写了已删包的路径,手动删掉 - 某些环境(Docker、CI)有 autoloader 缓存,
dump-autoload后仍异常,可临时加-o强制重生成:composer dump-autoload -o - 运行
composer show monolog/monolog应返回 “Package not found”,否则说明没真删干净
批量清空 require-dev 的三种真实场景方案
不是所有“批量删”都适合 composer remove 多参数——比如你想一键清掉所有开发依赖,或彻底切换到无测试环境,就得换策略。
- 安全首选:
composer remove --dev phpunit/phpunit friendsofphp/php-cs-fixer behat/behat(明确列出要删的包) - 快速但有风险:手动删
composer.json中整个"require-dev": { ... }块,再跑composer install --no-dev——注意这会重装所有剩余 dev 包,可能触发版本漂移 - 彻底清空(慎用):
jq 'del(.require-dev)' composer.json | sponge composer.json && composer update --no-dev(需提前装jq和moreutils;Windows 用户请改用 PowerShell 或临时文件)
全局包不能用 composer remove?先确认版本和上下文
composer global remove 仅在 Composer 2.2+ 有效,且必须在非项目目录下运行。很多人删不掉,是因为误在 Laravel 项目根目录里敲了命令,结果删的是当前项目的依赖。
- 先验证:
composer --version确保 ≥ 2.2;composer global show能列出包,才说明你在全局环境 - 正确姿势:
cd ~ && composer global remove laravel/installer(注意路径和包名全匹配,不能漏/) - 低版本 fallback 方案:
composer global require laravel/installer:(末尾冒号),或手动删~/.composer/vendor/laravel/installer+composer global dump-autoload - 切记:
composer global update不会清理 autoload 配置,删完必须手动dump-autoload,否则照样Class not found
grep -r "Monolog\" . --include="*.php" 这类搜索永远比命令多走一步;autoload 不 dump,再干净的 remove 也白搭。

















