migrify/vendor-patches

此包已被放弃,不再维护。作者建议使用 symplify/vendor-patches 包。

使用单条命令为包生成供应商补丁

11.3.7 2024-01-23 17:12 UTC

This package is auto-updated.

Last update: 2024-01-23 17:12:36 UTC


README

Downloads total

使用单条命令为包生成供应商补丁。

安装

composer require symplify/vendor-patches --dev

# If you are applying patches to production, be sure to also explicitly add cweagans/composer-patches.
composer require cweagans/composer-patches

用法

如何创建 /vendor 中的文件补丁

1. 创建一个你想要更改的 /vendor 文件的副本,后缀为 *.old

例如,如果你编辑

vendor/nette/di/src/DI/Extensions/InjectExtension.php
# copy of the file
vendor/nette/di/src/DI/Extensions/InjectExtension.php.old

2. 打开原始文件并更改你需要更改的行

 			if (DI\Helpers::parseAnnotation($rp, 'inject') !== null) {
-				if ($type = DI\Helpers::parseAnnotation($rp, 'var')) {
+				if ($type = \App\Reflection\Helper\StaticReflectionHelper::getPropertyType($rp)) {
+				} elseif ($type = DI\Helpers::parseAnnotation($rp, 'var')) {
 					$type = Reflection::expandClassName($type, Reflection::getPropertyDeclaringClass($rp));

只加载 *.php 文件,不加载 *.php.old 文件。这样你可以在生成补丁之前确保新的代码可以正常工作。

3. 运行 generate 命令 🥳️

vendor/bin/vendor-patches generate

此工具将在 /patches 目录中为以这种方式创建的所有文件生成补丁文件

/patches/nette-di-di-extensions-injectextension.php.patch

补丁路径基于原始文件路径,因此补丁名称总是唯一的。


此外,它还会将 cweagans/composer-patches 的配置添加到你的 composer.json

{
    "extra": {
        "patches": {
            "nette/di": [
                "patches/nette_di_di_extensions_injectextension.patch"
            ]
        }
    }
}

这就完成了!


现在你只需要运行 composer

composer install

然后你的补丁就会应用到你的代码中!


如果不行,从 composer 获取更多信息以找出原因

composer install --verbose

故障排除

如果你在 macOS 上,并且在应用补丁时遇到挂起,你可能需要安装 gpatch,你可以使用以下命令安装:

brew install gpatch

报告问题

如果你遇到错误或想要请求新功能,请访问 Symplify monorepo 问题跟踪器

贡献

此包的源代码包含在 Symplify monorepo 中。我们欢迎在此 symplify/symplify 包上对此包做出贡献。