• Stars
    star
    134
  • Rank 270,967 (Top 6 %)
  • Language
    PHP
  • License
    MIT License
  • Created almost 5 years ago
  • Updated 10 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Patch your vendor files the easy way

Vendor Patches

Downloads total

Generate vendor patches for packages with single command.

Install

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

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 = \App\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 🥳️

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.