Composer 本身不提供内置依赖更新通知机制,需通过 scripts 钩子(如 post-update-cmd)或 CI/CD 流水线集成外部通知(如 Slack、邮件),插件方案不推荐且不稳定。

Composer 自动更新依赖时如何触发通知?
Composer 本身不提供内置的依赖更新通知机制,所谓“自动更新通知”必须靠外部工具或脚本介入实现。它只负责执行 composer update 并输出变更日志,通知行为(邮件、Webhook、Slack 等)需你手动集成。
用 scripts 钩子在 update 后发通知最直接
在 composer.json 的 "scripts" 字段里挂载 post-update-cmd,是最轻量、最可控的方式:
"scripts": {
"post-update-cmd": [
"echo 'Dependencies updated at $(date)' >> /var/log/composer-updates.log",
"curl -X POST -H 'Content-Type: application/json' -d '{\"text\":\"Composer update done on $(hostname)\"}' https://hooks.slack.com/services/XXX"
]
}
注意点:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
-
post-update-cmd只在composer update(含--lock)后触发,install不会触发 - 命令按顺序执行,任一失败会导致后续中断(加
|| true可忽略非关键命令失败) - 环境变量如
$COMPOSER_COMMAND、$COMPOSER_EVENT可用于判断上下文 - 避免在钩子里调用
composer install或其他可能递归触发钩子的操作
CI/CD 中更可靠:把通知逻辑提到流水线层
在 GitHub Actions、GitLab CI 或 Jenkins 里做通知,比依赖 Composer 钩子更稳定:
- 钩子在本地开发机上可能被跳过(比如用了
--no-scripts) - CI 环境能统一控制通知渠道、密钥、重试逻辑
- 可精准对比
composer.lock变更前后差异,只在真正有更新时发通知 - 示例(GitHub Actions):
用git diff --name-only HEAD~1 composer.lock判断是否改动,再决定是否调用curl或 Slack Action
为什么不用插件或自定义 Installer?
有人尝试用 composer-plugin-api 写插件监听事件,但实际没必要:
- 官方插件机制对
post-update-cmd这类事件支持有限,且加载时机不稳定 - Installer 类型插件(
Composer\Installer\LibraryInstaller)是为包安装过程服务的,不适合做通知 - 额外依赖插件会增加项目复杂度,且 Composer 2.2+ 对第三方插件兼容性收紧,容易报
Plugin is not compatible with this version of Composer
真正要落地,优先走 scripts + CI 双保险;别指望 Composer 自己“想起来通知你”。

















