composer-changelogs插件仅在composer update后生效,它拦截并解析更新结果生成带链接的增量摘要,不读取或修改changelog.md,输出适用于commit message或ci日志。

composer-changelogs 插件只在 composer update 后生效
这个插件不是“生成日志”,而是「拦截并解析 composer update 的执行结果」,自动生成一份带链接的摘要。它不读 CHANGELOG.md,也不改任何文件,只输出文本到终端或写入指定路径。
常见错误现象:composer update 运行后没看到日志输出——很可能你没装插件,或装了但没触发(比如用了 composer install 或 composer require)。
- 必须用
composer update(全量)或composer update vendor/package(单包),其他命令不会触发 - 插件默认只对直接依赖生效;如果想包含间接依赖变更,得加
--with-dependencies - 输出内容含 GitHub/GitLab 的 release 和 compare 链接,但前提是包的
source里有url字段且是公开仓库
安装方式与 PATH 冲突风险
推荐全局安装:composer global require pyrech/composer-changelogs。但要注意系统 PATH 是否真包含 global bin 目录。
常见错误现象:composer update 后无输出,composer list 里也看不到 changelogs 命令——大概率是 PATH 没配对。
- Linux/macOS:检查
~/.composer/vendor/bin是否在$PATH中,可用echo $PATH | grep composer快速验证 - Windows:确认
%USERPROFILE%\AppData\Roaming\Composer\vendor\bin已加入系统环境变量 - 装完后运行
composer diagnose,看输出里有没有Plugin pyrech/composer-changelogs is installed
生成的日志不等于正式 CHANGELOG.md
composer-changelogs 输出的是「本次 update 的增量摘要」,不是供用户发布的完整变更日志。它和 CHANGELOG.md 是两套东西,不能互相替代。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
常见错误现象:把插件输出直接当 CHANGELOG.md 提交,结果发现漏了 breaking change、没按 Keep a Changelog 格式分段、日期错乱——这是混淆了用途。
- 插件输出适合贴进 commit message 或 CI 构建日志,用于快速回溯「这次升了啥」
- 正式
CHANGELOG.md必须手动维护,且每个版本块要和 Git tag 严格对应(如v3.2.0对应## [3.2.0] - 2026-06-10) - 插件不处理
Added/Changed/Fixed分类,也不校验语义化格式,别指望它帮你写发布说明
多仓库场景下链接生成可能失效
插件靠解析 composer.lock 里的 source.url 构造 release 页面链接。如果包来自私有 GitLab、Bitbucket 或 ZIP 包,链接会是空或 404。
常见错误现象:输出里一堆 Release: N/A 或跳转到不存在的页面——不是插件坏了,是源信息不全。
- 私有包需确保
composer.json的source字段含正确url,且可被公网访问(或配置内部镜像) - 用
dist.zip方式发布的包,source.url通常是空的,插件就无法生成 compare 链接 - 若只想看包名和版本变化,关掉链接生成:
composer update --no-plugins+ 手动 diffcomposer.lock更可靠
真正需要自动化生成正式 CHANGELOG.md 的项目,得搭配 conventional-changelog 或 git-chglog 这类基于 Git 提交记录的工具——composer-changelogs 解决不了那个问题。它只管「依赖变了什么」,不管「我自己的代码改了什么」。










