Vendor Patches
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
?
/vendor
file you Want To Change with *.old
Suffix
1. Create a Copy of 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.
generate
command 🥳️
3. Run 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.