Enables developers to autoload classes from projects outside the vendor directory. These links can replace projects inside the vendor directory and need not to be committed.

0.2.0 2014-05-18 12:52 UTC


Composer Devlinks automatically alters the file vendor/autoload.php after it is generated by Composer and injects references to custom autoloaders which are defined in a file named These autoloaders can map classes to different sources, so that effectively referenced packages can be replaced through local ones.


To add Composer Devlinks to a project, simply add a developer dependency on nunzion/composer-devlinks to your project's composer.json file and add a script element to include the linked autoloaders:

    "require-dev": {
        "nunzion/composer-devlinks": "*"
    "scripts": {
        "post-autoload-dump": "Nunzion\\Composer\\DevLinks\\Commands::includeLinkedAutoloaders"

Even if composer-devlinks is missing in non-dev installations, composer will not throw any errors when trying to run the script.


If you want to include your autoloader, you can create a file named in the same directory as the composer.json file:

    "links": [

All links were relative to composer.json, absolute paths can be specified too. If the link does not end with .php, /vendor/autoload.php will be appended automatically.

If the linked autoloader or the file cannot be found, no errors will be thrown.


Lets assume you are developing an application called "me/myapp" which depends on your composer package "me/mylibrary". While programming "me/myapp" you want to improve and extend "me/mylibrary" continuously.

Without Composer Devlinks you have to edit "me/mylibrary" in the vendor directory of your "me/myapp" installation. Apparently this is not a good idea - as soon as there is an update to "me/mylibrary" and you run composer update your changes will eventually be lost.

With Composer Devlinks you can clone both "me/mylibrary" and "me/myapp" into different directories, e.g. test/me-mylibrary and test/me-myapp. Then you can edit the file composer.json in test/me-myapp as explained above. This change to composer.json can be committed into your git repository. In the next step, you can create the file in the directory test/me-myapp to define a developer link to test/me-mylibrary with the following content:

    "links": [

Finally run composer install --dev or composer update for both projects to generate the autoloaders. Now whenever a class of "me/mylibrary" is loaded in test/me-myapp, it will be loaded from test/me-mylibrary.

The file should not be committed as these developer links should be defined only during development.


Henning Dieterichs -


Composer Devlinks is licensed under the MIT License.