custom-installer
                                
                                 custom-installer copied to clipboard
                                
                                    custom-installer copied to clipboard
                            
                            
                            
                        Composer Custom Type Installer
Composer Custom Type Installer
Adds a root-level custom type installer path to composer.json. Any custom type can be used to define a path the type should be installed in.
Installation
Simply require this library in your composer.json file. Typically this will be added as a dependency of the custom type to ensure that the library is loaded before the library that needs it. However, this can be added to the root composer.json, as long as it goes before any library that needs it.
{
    "require": {
        "davidbarratt/custom-installer": "1.0.*@dev"
    }
}
Usage
The added parameter(s) are only allowed on the root to avoid conflicts between multiple libraries. This also prevents a project owner from having a directory accidentally wiped out by a library. Note: Each package will go in it’s respective folder in the order in which they are installed.
The configuration has to be added in custom-installer of composer.json's extra section. It is similar to Composer installer's installation paths.
Pattern syntax
The key of the the configuration array is the path pattern. You can use some replacement tokens:
- {$name}: The name of the package (e.g.- yamlof- symfony/yaml)
- {$vendor}: The vendor of the package (e.g.- symfonyof- symfony/yaml)
- {$type}: for the composer package type (e.g.- library,- drupal-module)
Package filters
The value of the configuration array has to be an array. It holds the package filter for the given pattern. The pattern will be applied if any filter matches.
Package type filter
With type:[package-type] you can define a pattern per package type. You can use
any custom package type and are not limited to a predefined set.
Composer specific package types metapackage or composer-plugin will never be
handled by Custom Installer.
Example: type:custom-library for package type custom-library
Package name filter
You can  specify a pattern per full package name ([vendor]/[name]).
Custom Installer will only handle a specific package if a configuration exists that also handles the package type in general.
Examples
{
    "extra": {
        "custom-installer": {
            "web/": ["type:drupal-core"],
            "web/sites/{$name}/": ["type:drupal-site"],
            "custom/{$type}/{$vendor}/{$name}/": ["type:random-type"],
            "vendor/{$vendor}/{$name}/": ["type:library"],
            "web/sites/all/libraries/{$name}/": [
                "type:component",
                "ckeditor/ckeditor",
                "flesler/jquery.scrollto"
            ],
            "custom-folder-for-single-package": ["myvendorname/single-package"],
        }
    }
}
In the example we want to make sure CKEditor and Jquery ScrollTo will be
placed in web/sites/all/libraries. Both packages are of of package type
library. In order to change the path of those packages, we must declare a
fallback for the package type library. It shall stay in the default vendor
location (as library is the default composer package type). If you do not do
that the custom installer cannot handle the single packages (ckeditor and
flesler/jquery.scrollto ) due to the way composer installer plugins work.