彻底禁用 composer install 通知弹窗需卸载相关插件(如 composer-plugin-notify),或通过环境变量(如 no_notify=1)临时屏蔽;composer config set notify-on-install false 无效,因该配置项非官方支持。

composer install 时怎么彻底禁用通知弹窗
默认情况下,composer install 会调用系统命令(比如 notify-send)在桌面环境弹出安装完成提示——这不是 Composer 自身功能,而是某些 Linux 发行版预装的 composer-plugin-notify 或用户全局启用了通知插件导致的。
真正起作用的是插件行为,不是 Composer 核心配置项;notify-on-install 并不存在于官方配置中,它属于第三方插件(如 hirak/prestissimo 旧版或社区 fork 插件),不能通过 composer config 直接设置。
- 检查是否安装了通知类插件:
composer global show,留意是否有composer-notify、composer-plugin-notify等 - 卸载插件最干净:
composer global remove hirak/prestissimo(如果它带通知逻辑)或具体插件名 - 若插件不可卸,可临时屏蔽通知命令:在终端执行前加
NO_NOTIFY=1 composer install(前提是插件读取该环境变量)
如何确认当前有没有启用通知插件
Composer 不会在 composer.json 或 auth.json 里声明通知插件,它们只出现在全局 vendor 目录中。直接查插件加载状态比翻配置更可靠。
- 运行
composer global diagnose,观察输出末尾是否提示 “Plugin X is installed” - 手动检查:
ls -la ~/.composer/vendor/(Linux/macOS)或%APPDATA%\Composer\vendor\(Windows),找含notify、desktop、gui字样的包名 - 执行
composer install -vvv,看详细日志里是否出现类似Executing command (CWD): notify-send ...的行
不删插件的情况下临时关闭通知
有些插件支持运行时开关,但依赖其具体实现。没有统一标准,得看插件文档——而多数通知插件根本没提供配置入口,只能靠环境变量或绕过执行逻辑。
- 常见兼容方式:
NOTIFY=0 composer install、COMPOSER_NO_NOTIFY=1 composer install(试几个常见变量名) - 强制禁用所有 shell 命令执行(副作用大):
composer install --no-plugins,这会同时关掉 autoload 优化、脚本钩子等有用功能 - 如果只是 CI/CD 场景,确保运行环境无桌面会话(如 Docker 默认无
DISPLAY),多数通知命令会自动失败,无需额外操作
为什么 composer config set notify-on-install false 不生效
因为 notify-on-install 不是 Composer 官方支持的配置项,composer config 列表里压根没有它。执行该命令只会把键值写进 composer.json 或 config.json,但核心逻辑完全不读取这个字段。
- 官方 config 支持项见
composer config --list,里面没有通知相关字段 - 试图设置会导致配置文件里多出无意义字段,后续升级或迁移时可能引发混淆
- 真正要关通知,必须定位到源头插件,而不是改配置
通知是否弹出,取决于有没有插件、插件是否激活、系统能否执行桌面命令——和 Composer 配置文件无关。很多人卡在这一步,是因为搜到的教程把插件行为误当作 Composer 内置功能来处理。










