- Notifications
You must be signed in to change notification settings - Fork19
Patch your vendor files the easy way
License
symplify/vendor-patches
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Generate vendor patches for packages with single command.
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
How to createa patch for a file in/vendor
?
For example, if you edit:
vendor/nette/di/src/DI/Extensions/InjectExtension.php# copy of the filevendor/nette/di/src/DI/Extensions/InjectExtension.php.old
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 canbe sure the new code is working before you generate patches.
vendor/bin/vendor-patches generate
This tool will generatepatch 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, sothe patch name is always unique.
Also, it will add configuration forcweagans/composer-patches
to yourcomposer.json
:
{"extra": {"patches": {"nette/di": ["patches/nette_di_di_extensions_injectextension.patch" ] } }}
Optionally, if you use apatches file you can specify its path using the--patches-file
option:
vendor/bin/vendor-patches generate --patches-file=patches.json
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
If you are on macOS, and got hang on applying patch, you may need to installgpatch
, you can install with:
brew install gpatch
About
Patch your vendor files the easy way