symplify/vendor-patches

Generate vendor patches for packages with single command

This package is auto-updated.

Last update: 2021-10-11 13:49:20 UTC


README

Downloads total

Generate vendor patches for packages with single command.

Install

composer require symplify/vendor-patches --dev

Usage

How to create a patch for a file in /vendor?

1. Create a Copy of /vendor file you Want To Change with *.old Suffix

For example, if you edit:

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

2. Open the original file and change the lines you need:

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

Only *.php file is loaded, not the *.php.old one. This way you can be sure the new code is working before you generate patches.

3. Run generate command for every single file changed this way once for all files 🎆

vendor/bin/vendor-patches generate

This tool will generate patch files for all files created this way in /patches directory:

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

The patch path is based on original file path, so the patch name is always unique.

Also, it will add configuration for cweagans/composer-patches to your composer.json:

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

That's it!

Now all you need to do is run composer:

composer install

And your patches are applied to your code!


If not, get more information from composer to find out why:

composer install --verbose

Report Issues

In case you are experiencing a bug or want to request a new feature head over to the Symplify monorepo issue tracker

Contribute

The sources of this package are contained in the Symplify monorepo. We welcome contributions for this package on symplify/symplify.