Composer 官方未提供 composer global remove 命令,因其全局安装机制不维护独立清单;可靠卸载方式为手动删除 ~/.composer/vendor/ 下对应包目录及 vendor/bin/ 中的可执行文件。

composer global remove 并不存在 —— Composer 官方从未实现这个命令,直接运行会报错 Command "global:remove" is not defined 或类似提示。
为什么没有 composer global remove
Composer 的全局安装机制本质是把包写入 ~/.composer/vendor/(Linux/macOS)或 %APPDATA%\Composer\vendor\(Windows),并把二进制文件软链到 ~/.composer/vendor/bin/。它没有维护独立的“全局已安装清单”,也不提供反向卸载逻辑。
- 官方只支持
composer global require和composer global update -
composer remove仅作用于当前项目vendor/,对全局无效 - 试图用
composer global require --no-install xxx或其他变通参数也无法触发卸载
真正能卸载全局包的两种可靠方式
必须手动干预,但操作简单、无副作用:
-
方式一(推荐):删 vendor 子目录 + 清理 bin 链接
进入全局 vendor 目录:cd ~/.composer/vendor
(macOS/Linux)或cd %APPDATA%\Composer\vendor
(Windows),然后删除对应包的目录,例如卸载laravel/installer就删掉laravel/installer文件夹;再检查~/.composer/vendor/bin/下是否有残留的可执行文件(如laravel),有则一并rm或del -
方式二:重装覆盖式“卸载”
运行composer global require some/package:dev-none(其中dev-none是一个根本不存在的版本),Composer 会报错并清空该包的安装痕迹 —— 这是社区流传的 hack,但不稳定,某些版本会卡在依赖解析阶段,不建议依赖
卸载后验证是否干净
别只看命令是否报错,要确认三处:
- 执行
composer global show,输出中不应再出现目标包名 - 执行
which laravel(macOS/Linux)或where laravel(Windows),返回空表示 bin 链接已失效 - 手动
ls ~/.composer/vendor/,确认对应厂商/包名目录不存在
最易被忽略的是 vendor/bin/ 下的残留可执行文件 —— 即使 vendor 里删干净了,旧的 laravel 或 phpunit 二进制仍可能留在 PATH 里继续生效,导致你以为卸载失败。动手前先 ls -l ~/.composer/vendor/bin 看一眼链接指向,比反复试命令更省时间。










