Renovatebot是否支持运行Composer插件?
先说结论:Composer的merge-plugin和Renovatebot是可以兼容的,你遇到的问题是因为Renovate默认不执行Composer插件逻辑导致的,下面是具体原因和解决办法:
为什么本地生效但Renovate里不行?
Renovatebot默认是静态分析项目根目录的composer.json来生成依赖更新,不会完整运行Composer的命令流程,自然也就不会触发merge-plugin的合并操作。而你本地是直接跑composer install/update,插件会正常执行合并,所以两边结果不一样。
解决步骤
1. 让Renovate用实际Composer命令处理依赖
在你的renovate.json里加这段配置,强制Renovate运行composer install来处理依赖,这样就能触发merge-plugin的合并:
{ "composer": { "useInstallCommand": true } }
这个配置会让Renovate走完整的Composer安装流程,插件就能正常工作,lock文件也会包含合并后的依赖。
2. 确认merge-plugin已正确安装
检查你的composer.json里有没有声明wikimedia/composer-merge-plugin,不管是require还是require-dev都可以:
{ "require-dev": { "wikimedia/composer-merge-plugin": "^2.1" } }
如果Renovate运行环境里没装这个插件,合并操作肯定跑不起来。
3. 核对文件路径和权限
确认docroot/modules/contrib/webform/composer.libraries.json这个路径在仓库里确实存在,而且没被.gitignore挡住——如果Renovate读不到这个文件,自然没法合并。另外如果用的是GitHub托管的Renovate App,要确保它有读取仓库所有文件的权限。
4. 触发Renovate重新扫描
如果配置改完还没生效,直接在Renovate生成的PR下面评论@renovatebot rebase,让它重新拉取代码并执行更新流程。
内容的提问来源于stack exchange,提问作者Beto Aveiga

