如何阻止composer-patches对本地路径仓库执行补丁操作?
阻止本地路径Composer仓库被cweagans/composer-patches打补丁的方法
以下是几种可行的解决办法,按需选择:
通过
patches-exclude排除指定包的所有补丁
在项目根目录的composer.json中,添加patches-exclude配置,指定本地路径加载的包跳过所有补丁:"extra": { "patches-exclude": { "your-vendor/your-local-package": [ "*" ] } }如果有多个本地包,逐个添加对应的包名即可。若只想排除特定补丁,把
*换成具体的补丁文件路径即可。配置本地包使用dist镜像安装
即使已经关闭了符号链接,仍可强制Composer将本地包打包为临时dist文件后再安装到vendor目录,避免直接修改本地仓库源文件。在composer.json的repositories配置中补充dist: true:"repositories": [ { "type": "path", "url": "./path/to/your-local-package", "options": { "symlink": false, "dist": true } } ]设置
patchLevel禁用指定包的补丁
在项目composer.json的extra字段中,给本地包设置patchLevel为0,直接跳过该包的所有补丁操作:"extra": { "patchLevel": { "your-vendor/your-local-package": 0 } }单独维护本地包的补丁
若需要对本地包打补丁,不要放在项目全局的补丁配置里,而是直接在本地包的composer.json中添加补丁规则,或者在本地仓库的临时分支预先打好补丁。这样既不会影响项目全局补丁逻辑,也能避免污染本地包的原始代码(后续官方更新时直接切换回主分支即可)。
内容的提问来源于stack exchange,提问作者Menno van den Heuvel
相关产品推荐
相关产品推荐

