composer 从不支持 notify-on-install 配置项,packagist 自2018年4月起已彻底关闭安装通知功能,所有现代版本 composer 均不再发送任何安装上报请求。

Composer 默认不会向 Packagist 发送安装通知,所谓 “notify-on-install” 是个过时概念,实际并不存在该配置项或功能;Packagist 早已在 2018 年关闭了所有包安装统计上报机制。
packagist.org 已停用 install notification 功能
早期(2015–2017)Composer 在执行 composer install 或 composer update 时,会尝试向 Packagist 发送匿名安装事件(用于统计下载量),但该机制存在隐私争议且数据价值有限。Packagist 官方于 2018 年 4 月正式关闭该接口,此后所有版本的 Composer(≥1.6.0 / ≥2.0.0)均不再发送任何安装通知。
你无法通过配置开启它,因为它已从服务端和客户端逻辑中移除:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
-
composer.json中从未定义过notify-on-install字段 —— 这不是合法配置项 -
composer config命令查不到相关 global 或 local 设置 - 抓包或启用
-v调试模式可见,请求中不再包含/downloads或/install类路径
为什么你会看到 “notify-on-install” 相关错误或文档?
这类信息通常来自以下几种情况:
- 旧版第三方插件(如
composer/installers早期 fork、自定义脚本)误读了已废弃的 Packagist API 文档 - 某些中文技术博客将
notify-batch(GitHub Webhook 回调配置)或pre-install-cmd钩子混淆为安装通知机制 - 本地私有仓库(如 Satis、Private Packagist)启用了自己的统计钩子,被误认为是 Composer 原生行为
- 运行
composer install --no-scripts --no-plugins后仍怀疑“通知没发出去”,实则是根本没这回事
如果你真需要记录包安装行为,得自己实现
Composer 不提供开箱即用的安装日志或上报功能,但可通过事件钩子间接达成:
- 在项目根目录
composer.json中添加:"scripts": { "post-install-cmd": [ "echo 'Installed packages logged to install.log'", "date >> install.log && composer show --installed --format=json >> install.log" ] } - 使用
composer run post-install-cmd手动触发,或依赖composer install自动执行(需确保未加--no-scripts) - 若需上报到内部系统,可替换为 curl 调用:
curl -X POST -d \"$(composer show --installed --format=json)\" https://your-internal/log - 注意:钩子只在本地执行,不随
composer install传播到其他环境;生产环境需配合 CI/CD 日志系统统一采集
真正容易被忽略的是:很多团队花时间排查“为什么 notify-on-install 不生效”,却没意识到这个功能早就没了——与其折腾不存在的开关,不如确认你依赖的私有源是否启用了自己的统计逻辑,或者直接用 composer show --installed + 日志轮转来满足审计需求。










