PHPackages                             eric-chau/installers - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. eric-chau/installers

ActiveComposer-installer[Utility &amp; Helpers](/categories/utility)

eric-chau/installers
====================

A multi-framework Composer library installer

v1.0.18(11y ago)0511MITPHP

Since Sep 8Pushed 11y ago1 watchersCompare

[ Source](https://github.com/eric-chau/installers)[ Packagist](https://packagist.org/packages/eric-chau/installers)[ Docs](http://composer.github.com/installers/)[ RSS](/packages/eric-chau-installers/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (2)Versions (20)Used By (0)

A Multi-Framework [Composer](http://getcomposer.org) Library Installer
======================================================================

[](#a-multi-framework-composer-library-installer)

[![Build Status](https://camo.githubusercontent.com/1ab8d15962e20e77e4c6ec356275ea7854d8ffdb2d83f1e5f0d31aab806eb665/687474703a2f2f696d672e736869656c64732e696f2f7472617669732f636f6d706f7365722f696e7374616c6c6572732e737667)](http://travis-ci.org/composer/installers)

This is for PHP package authors to require in their `composer.json`. It will install their package to the correct location based on the specified package type.

The goal of `installers` is to be a simple package type to install path map. Users can also customize the install path per package and package authors can modify the package name upon installing.

`installers` isn't intended on replacing all custom installers. If your package requires special installation handling then by all means, create a custom installer to handle it.

**Natively Supported Frameworks**:

The following frameworks natively work with Composer and will be installed to the default `vendor` directory. `composer/installers`is not needed to install packages with these frameworks:

- Aura
- Symfony2
- Yii
- Yii2

**Current Supported Package Types**:

> Stable types are marked as **bold**, this means that installation paths for those type will not be changed. Any adjustment for those types would require creation of brand new type that will cover required changes.

FrameworkTypesAGL`agl-module`AnnotateCms`annotatecms-module`
`annotatecms-component`
`annotatecms-service`Bitrix`bitrix-module`
`bitrix-component`
`bitrix-theme`CakePHP 2+**`cakephp-plugin`**Chef`chef-recipe`
`chef-role`CodeIgniter`codeigniter-library`
`codeigniter-third-party`
`codeigniter-module`concrete5`concrete5-block`
`concrete5-package`
`concrete5-theme`
`concrete5-update`Craft`craft-plugin`Croogo`croogo-plugin`
`croogo-theme`Dolibarr`dolibarr-module`Drupal**`drupal-module`
`drupal-theme`**
`drupal-library`
`drupal-profile`
`drupal-drush`Elgg`elgg-plugin`FuelPHP v1.x`fuel-module`
`fuel-package`
`fuel-theme`Hurad`hurad-plugin`
`hurad-theme`Joomla`joomla-component`
`joomla-module`
`joomla-template`
`joomla-plugin`
`joomla-library`Kirby**`kirby-plugin`**Kohana**`kohana-module`**Laravel`laravel-library`Lithium**`lithium-library`
`lithium-source`**Magento`magento-library`
`magento-skin`
`magento-theme`Mako`mako-package`MODX Evo`modxevo-snippet`
`modxevo-plugin`
`modxevo-module`
`modxevo-template`
`modxevo-lib`MediaWiki`mediawiki-extension`October**`october-module`
`october-plugin`**OXID`oxid-module`
`oxid-theme`
`oxid-out`MODULEWork`modulework-module`Moodle`moodle-*` (Please [check source](https://raw.githubusercontent.com/composer/installers/master/src/Composer/Installers/MoodleInstaller.php) for all supported types)Piwik`piwik-plugin`phpBB`phpbb-extension`
`phpbb-style`
`phpbb-language`Pimcore`pimcore-plugin`PPI**`ppi-module`**Puppet`puppet-module`REDAXO`redaxo-addon`Roundcube`roundcube-plugin`shopware`shopware-backend-plugin`
`shopware-core-plugin`
`shopware-frontend-plugin`
`shopware-theme`SilverStripe`silverstripe-module`
`silverstripe-theme`symfony1**`symfony1-plugin`**Tusk`tusk-task`
`tusk-command`
`tusk-asset`TYPO3 Flow`typo3-flow-package`
`typo3-flow-framework`
`typo3-flow-plugin`
`typo3-flow-site`
`typo3-flow-boilerplate`
`typo3-flow-build`TYPO3 CMS`typo3-cms-extension`Wolf CMS`wolfcms-plugin`WordPress**`wordpress-plugin`
`wordpress-theme`**
`wordpress-muplugin`Zend`zend-library`
`zend-extra`
`zend-module`Zikula`zikula-module`
`zikula-theme`Example `composer.json` File
----------------------------

[](#example-composerjson-file)

This is an example for a CakePHP plugin. The only important parts to set in your composer.json file are `"type": "cakephp-plugin"` which describes what your package is and `"require": { "composer/installers": "~1.0" }` which tells composer to load the custom installers.

```
{
    "name": "you/ftp",
    "type": "cakephp-plugin",
    "require": {
        "composer/installers": "~1.0"
    }
}
```

This would install your package to the `Plugin/Ftp/` folder of a CakePHP app when a user runs `php composer.phar install`.

So submit your packages to [packagist.org](http://packagist.org)!

Custom Install Paths
--------------------

[](#custom-install-paths)

If you are consuming a package that uses the `composer/installers` you can override the install path with the following extra in your `composer.json`:

```
{
    "extra": {
        "installer-paths": {
            "your/custom/path/{$name}/": ["shama/ftp", "vendor/package"]
        }
    }
}
```

A package type can have a custom installation path with a `type:` prefix.

```
{
    "extra": {
        "installer-paths": {
            "your/custom/path/{$name}/": ["type:wordpress-plugin"]
        }
    }
}
```

This would use your custom path for each of the listed packages. The available variables to use in your paths are: `{$name}`, `{$vendor}`, `{$type}`.

Custom Install Names
--------------------

[](#custom-install-names)

If you're a package author and need your package to be named differently when installed consider using the `installer-name` extra.

For example you have a package named `shama/cakephp-ftp` with the type `cakephp-plugin`. Installing with `composer/installers` would install to the path `Plugin/CakephpFtp`. Due to the strict naming conventions, you as a package author actually need the package to be named and installed to `Plugin/Ftp`. Using the following config within your **package** `composer.json`will allow this:

```
{
    "name": "shama/cakephp-ftp",
    "type": "cakephp-plugin",
    "extra": {
        "installer-name": "Ftp"
    }
}
```

Please note the name entered into `installer-name` will be the final and will not be inflected.

Contribute!
-----------

[](#contribute)

- [Fork and clone](https://help.github.com/articles/fork-a-repo).
- Run the command `php composer.phar install --dev` to install the dev dependencies. See [Composer](https://github.com/composer/composer#installation--usage).
- Use the command `phpunit` to run the tests. See [PHPUnit](http://phpunit.de).
- Create a branch, commit, push and send us a [pull request](https://help.github.com/articles/using-pull-requests).

To ensure a consistent code base, you should make sure the code follows the [Coding Standards](http://symfony.com/doc/2.0/contributing/code/standards.html)which we borrowed from Symfony.

If you would like to help, please take a look at the list of [issues](https://github.com/composer/installers/issues).

### Should we allow dynamic package types or paths? No.

[](#should-we-allow-dynamic-package-types-or-paths-no)

What are they? The ability for a package author to determine where a package will be installed either through setting the path directly in their `composer.json` or through a dynamic package type: `"type": "framework-install-here"`.

It has been proposed many times. Even implemented once early on and then removed. `installers` won't do this because it would allow a single package author to wipe out entire folders without the user's consent. That user would then come here to yell at us.

###  Health Score

33

—

LowBetter than 75% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity12

Limited adoption so far

Community21

Small or concentrated contributor base

Maturity72

Established project with proven stability

 Bus Factor1

Top contributor holds 63.5% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~39 days

Recently: every ~15 days

Total

19

Last Release

4282d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/aaa8dc5ebf777dd52a4fca1b8b3afac33a8e7be97f72d6b5018d35ef184291f7?d=identicon)[mickaelandrieu](/maintainers/mickaelandrieu)

![](https://www.gravatar.com/avatar/a3904cb9fc393635f46026a3d440aaece2587f15f4dceab798adc2baca88fab7?d=identicon)[eric-chau](/maintainers/eric-chau)

---

Top Contributors

[![shama](https://avatars.githubusercontent.com/u/99604?v=4)](https://github.com/shama "shama (115 commits)")[![Seldaek](https://avatars.githubusercontent.com/u/183678?v=4)](https://github.com/Seldaek "Seldaek (10 commits)")[![GromNaN](https://avatars.githubusercontent.com/u/400034?v=4)](https://github.com/GromNaN "GromNaN (6 commits)")[![rchavik](https://avatars.githubusercontent.com/u/39490?v=4)](https://github.com/rchavik "rchavik (5 commits)")[![schmunk42](https://avatars.githubusercontent.com/u/649031?v=4)](https://github.com/schmunk42 "schmunk42 (3 commits)")[![onEXHovia](https://avatars.githubusercontent.com/u/3332033?v=4)](https://github.com/onEXHovia "onEXHovia (3 commits)")[![s7eph4n](https://avatars.githubusercontent.com/u/2829850?v=4)](https://github.com/s7eph4n "s7eph4n (3 commits)")[![eric-chau](https://avatars.githubusercontent.com/u/1244070?v=4)](https://github.com/eric-chau "eric-chau (3 commits)")[![JeroenDeDauw](https://avatars.githubusercontent.com/u/146040?v=4)](https://github.com/JeroenDeDauw "JeroenDeDauw (3 commits)")[![vysinsky](https://avatars.githubusercontent.com/u/3693578?v=4)](https://github.com/vysinsky "vysinsky (2 commits)")[![chillu](https://avatars.githubusercontent.com/u/111025?v=4)](https://github.com/chillu "chillu (2 commits)")[![ChristianGaertner](https://avatars.githubusercontent.com/u/2886317?v=4)](https://github.com/ChristianGaertner "ChristianGaertner (2 commits)")[![damour](https://avatars.githubusercontent.com/u/881794?v=4)](https://github.com/damour "damour (2 commits)")[![fabian](https://avatars.githubusercontent.com/u/13346?v=4)](https://github.com/fabian "fabian (2 commits)")[![Mihailoff](https://avatars.githubusercontent.com/u/413295?v=4)](https://github.com/Mihailoff "Mihailoff (2 commits)")[![RobLoach](https://avatars.githubusercontent.com/u/25086?v=4)](https://github.com/RobLoach "RobLoach (2 commits)")[![sagikazarmark](https://avatars.githubusercontent.com/u/1226384?v=4)](https://github.com/sagikazarmark "sagikazarmark (2 commits)")[![ADmad](https://avatars.githubusercontent.com/u/142658?v=4)](https://github.com/ADmad "ADmad (2 commits)")[![mre](https://avatars.githubusercontent.com/u/175809?v=4)](https://github.com/mre "mre (1 commits)")[![rdoursenaud](https://avatars.githubusercontent.com/u/1210367?v=4)](https://github.com/rdoursenaud "rdoursenaud (1 commits)")

---

Tags

symfonylaravelwordpressdrupalinstallerzendpiwikcakephpcodeigniterfuelphplithiumphpbbppisilverstripemoodlekohanamakomagentoaglroundcubemediawikichefcroogopuppetmoduleworkannotatecmsbitrixzikulaconcrete5elggHuradshopwareMODX EvoOXIDWolfCMSDolibarrjoomlaCrafttypo3

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/eric-chau-installers/health.svg)

```
[![Health](https://phpackages.com/badges/eric-chau-installers/health.svg)](https://phpackages.com/packages/eric-chau-installers)
```

###  Alternatives

[composer/installers

A multi-framework Composer library installer

1.4k136.0M6.0k](/packages/composer-installers)[kmi/db-sync-tool

Python script to synchronize a database from and to client systems.

323.5k](/packages/kmi-db-sync-tool)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
