Getting Started


There are a few terms specific to this plugin. Understanding them before proceeding may help with understanding.

This document is for end-users

If you’re looking for developer-focused documentation about each of these components, see the Capabilities page in the API documentation.

Resolvers, downloaders, and patchers are all small units of functionality that can be disabled individually or extended by other Composer plugins.


A resolver is a component that looks for patch definitions in a particular place. If any patch definitions are found, they are added to a list maintained internally by the plugin.

An example of a resolver is \\cweagans\\Composer\\Resolver\\PatchesFile. If a patches-file is configured in composer.json, the PatchesFile resolver opens the specified patches file, finds any defined patches, and adds them to the list of patches.


A downloader is (intuitively) a component that downloads a patch. The ComposerDownloader is the default downloader and uses the same mechanism to download patches that is used by Composer to download packages.


A patcher is a mechanism by which a downloaded patch can be applied to a package. The plugin ships with a handful of patchers in an effort to ensure that a particular system is able to apply a patch somehow. Generally, for each system program that is capable of applying a patch (in the core plugin, this is git (via git apply)), a Patcher can be defined that uses it.