使用 composer-patches 打补丁分三步:安装插件、在 composer.json extra.patches 中声明补丁(支持远程 URL 或本地路径)、执行 composer install/update 触发应用;补丁不修改源码,仅下载后自动应用,适用于紧急修复,需及时跟进上游合并并移除。

直接用 composer-patches 为依赖包打补丁,核心就三步:安装插件、声明补丁、执行安装。它不修改源码仓库,而是下载后自动应用 patch 文件,适合紧急修复线上 bug 或等待上游合入前的临时方案。
项目根目录下运行:
composer require cweagans/composer-patches:^1.7(推荐 v1.7+,兼容 Composer 2.x)在 extra 段落中添加 patches 配置,按目标包名组织:
"extra": {
"patches": {
"monolog/monolog": {
"Fix memory leak in StreamHandler": "https://github.com/Seldaek/monolog/pull/1234.patch",
"Avoid null dereference in JsonFormatter": "./patches/monolog-null-check.patch"
},
"laravel/framework": {
"Hotfix: session regeneration race condition": "./patches/laravel-session-race.patch"
}
}
}patches/ 目录下)补丁只在以下操作中生效:
composer install(首次安装依赖时)composer update vendor/package-name(更新特定包时)composer update(全量更新时,所有声明补丁都会重试应用)注意:已安装的包不会自动重打补丁。如果想强制重应用,可先删 vendor/ 再 composer install,或加 --with-all-dependencies 确保依赖树完整重建。
补丁是否成功?看终端输出:
Applying patches for monolog/monolog → + Fix memory leak...
git diff 格式(含 diff --git 头和 index 行),用 git apply --check xxx.patch 可提前校验补丁文件建议用 git diff 生成(从干净分支 checkout 后修改再 diff),避免手工编辑格式错误。
基本上就这些。补丁不是长期方案,记得同步跟进上游状态,及时移除补丁并升级到正式版本。
以上就是如何通过composer-patches插件为依赖包打补丁?(紧急修复)的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号