Yii 2.0: Using your own forked version of extensions with composer

40 followers

So you want to use a fork of any existing vendor extension with your Yii 2 install and use the fork, instead of original source. This does not need you to push any update or register your package on packagist.org. You are recommended to follow the approach below:

Step 1

Let's take an example. Let's say you want to fork the package kartik-v/yii2-widgets.

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 dev-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 Yii2 applications 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 run the following command from console in your application root.

php composer.phar update

Composer should tell you that files have been modified. Answer 'yes' to any questions. This should enable to use your own fork.

Total 3 comments

#19818 report it
diazrada at 2016/03/30 07:05am
Not working

I can't manage to make it work. Do you change the require with your name or it remains as it was, changing just the "*" by "dev-custom"? Already tried both, with no success, it says: "The requested package could not be found in any version" when I put my name, and "The requested package synatree/yii2-dynamic-relations dev-custom could not be found" when I keep the initial user repository. Any clue?

#19448 report it
Gogolinsky at 2015/07/10 03:27am
dev-

https://getcomposer.org/doc/05-repositories.md#vcs You need to rename you own branch with dev- suffix

#17757 report it
ThePr0f3550r at 2014/07/19 11:00pm
permit to integrate yii2 heart

I permit to integrate your amazing extension (grid and widget) with my extension .. yii2-heart

Leave a comment

Please to leave your comment.