正确命令是 composer global require --no-install 后执行 composer global update。需先修改 ~/.composer/composer.json 删除对应依赖项,再运行 composer global update 以自动移除;直接删 vendor 目录会导致残留问题。

composer global remove 不存在,正确命令是 composer global require --no-install
Composer 没有 composer global remove 这个子命令,直接运行会报错:Command "global:remove" is not defined.。卸载全局包的本质是「从全局 vendor 的 composer.json 中删掉依赖项,再删掉对应安装的文件」,但 Composer 不提供一键卸载,必须手动干预。
标准操作:先删 composer.json 条目,再删 vendor 文件
全局包信息存在 ~/.composer/composer.json(Linux/macOS)或 %APPDATA%\Composer\composer.json(Windows)。操作分两步:
- 用文本编辑器打开该
composer.json,在"require"对象里删掉对应包的键值对,例如删掉"laravel/installer": "^4.0" - 运行
composer global update—— 它会按更新后的composer.json重装依赖,自动移除已删条目的包及其依赖
不推荐用 rm -rf ~/.composer/vendor/xxx 直接删目录,会导致 composer global list 显示残留、后续 update 出错或依赖冲突。
验证是否卸载干净
执行以下命令确认:
-
composer global list—— 不再显示该包名 -
which laravel(以 laravel/installer 为例)—— 返回空,说明二进制命令已失效 -
composer global show vendor/package-name—— 报错Package not found
如果 which 仍返回路径,说明系统 PATH 缓存了旧的软链,需检查 ~/.composer/vendor/bin/ 是否还有残留可执行文件,手动 rm 即可。
替代方案:用 composer global require --no-install 强制“降级”为未安装状态
这是最接近“卸载”的快捷方式,适用于想快速清理且不想手动改 JSON 的场景:
composer global require vendor/package-name:@dev --no-install-
--no-install阻止实际安装,但会把该包写入composer.json并设为"@dev";紧接着再运行composer global update,它发现没有满足的稳定版本,就会彻底移除 - 注意:必须确保原安装的是稳定版本(如
^4.0),否则可能无效
这个技巧本质是利用 Composer 解析版本约束失败来触发卸载,不是官方文档推荐做法,但实测在多数环境下可靠。










