How can one use a fork of any existing PHP vendor package, instead of using original source, that can be updated regularly by composer dependency manager?
So you want to use a fork of any existing PHP vendor package and use the fork for update by composer dependency manager , instead of original source. This does not need you to push any update or register your package on packagist.org. Instead, the recommended approach is to follow the few simple steps as mentioned below:
Step 1
We will start with an example. Identify the package on an accessible source repository like Github. Let’s say you want to fork the package kartik-v/yii2-widgets on the Github repository.
Step 2
Fork the library on GitHub. It is important for you to check if the source contains a valid composer.json
file. This is important for the rest of the steps to work. After the fork, let’s say your forked package version is now at https://github.com/yourname/yii2-widgets
. As a next step, you must create a custom branch (you will update the version constraint in composer.json
later to point to your custom branch). Your custom branch name must be prefixed with dev-
. For example, let us assume you create a branch named custom
and your patched updates will be within a branch named custom
.
Step 3
Push your library changes to the custom branch above (You can check which one it is on Packagist, under “Source:” – Example).
Step 4
Override your composer.json
in your applications root folder (e.g. Yii2 app root folder) to point to your fork repository. The original composer.json
before would have something like below:
"require": { "kartik-v/yii2-widgets": "*" },
The composer.json
after edit will need to have these additional lines. Note that the dev-custom
branch named above is used in the require
section as shown below:
{ "repositories": [ { "type": "vcs", "url": "https://github.com/yourname/yii2-widgets" } ], "require": { "kartik-v/yii2-widgets": "dev-custom" }, }
Step 5
Now use one of the following options as mentioned below, to install the package from your console in your application root.
Option 1: Newbie users
A safer command which uses your composer.lock
settings.
php composer.phar install
Option 2: Experienced users
This command will refresh/update all your packages with dependencies to the latest version.
php composer.phar update
Composer should tell you that files have been modified. Answer yes to any questions.
Voila, this should enable you now to use the custom fork of the package for all future updates by composer on your environment.