PHPackages                             corneltek/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. corneltek/installers

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

corneltek/installers
====================

A multi-framework Composer library installer

v1.0.22(10y ago)335716MITPHP

Since Sep 8Pushed 10y ago1 watchersCompare

[ Source](https://github.com/corneltek/installers)[ Packagist](https://packagist.org/packages/corneltek/installers)[ Docs](http://composer.github.com/installers/)[ RSS](/packages/corneltek-installers/feed)WikiDiscussions master Synced yesterday

READMEChangelogDependencies (3)Versions (24)Used By (6)

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.

FrameworkTypesAimeos`aimeos-extension`Asgard`asgard-module`
`asgard-theme`AGL`agl-module`Bonefish`bonefish-package`AnnotateCms`annotatecms-module`
`annotatecms-component`
`annotatecms-service`Bitrix`bitrix-module`
`bitrix-component`
`bitrix-theme`CakePHP 2+**`cakephp-plugin`**Chef`chef-cookbook`
`chef-role`CCFramework`ccframework-ship`
`ccframework-theme`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`DokuWiki`dokuwiki-plugin`
`dokuwiki-template`Dolibarr`dolibarr-module`Drupal**`drupal-core`
`drupal-module`
`drupal-theme`**
`drupal-library`
`drupal-profile`
`drupal-drush`Elgg`elgg-plugin`FuelPHP v1.x`fuel-module`
`fuel-package`
`fuel-theme`FuelPHP v2.x`fuelphp-component`Grav`grav-plugin`
`grav-theme`Hurad`hurad-plugin`
`hurad-theme`ImageCMS`imagecms-template`
`imagecms-module`
`imagecms-library`Joomla`joomla-component`
`joomla-module`
`joomla-template`
`joomla-plugin`
`joomla-library`Kirby**`kirby-plugin`**
`kirby-field`
`kirby-tag`KodiCMS`kodicms-plugin`
`kodicms-media`Kohana**`kohana-module`**Laravel`laravel-library`Lithium**`lithium-library`
`lithium-source`**Magento`magento-library`
`magento-skin`
`magento-theme`Mako`mako-package`Mautic`mautic-plugin`
`mautic-theme`MODX Evo`modxevo-snippet`
`modxevo-plugin`
`modxevo-module`
`modxevo-template`
`modxevo-lib`MediaWiki`mediawiki-extension`October**`october-module`
`october-plugin`
`october-theme`**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`RadPHP`radphp-bundle`REDAXO`redaxo-addon`Roundcube`roundcube-plugin`shopware`shopware-backend-plugin`
`shopware-core-plugin`
`shopware-frontend-plugin`
`shopware-theme`SilverStripe`silverstripe-module`
`silverstripe-theme`SMF`smf-module`
`smf-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` (Deprecated in this package, use the [TYPO3 CMS Installers](https://packagist.org/packages/typo3/cms-composer-installers) instead)Wolf CMS`wolfcms-plugin`WordPress**`wordpress-plugin`
`wordpress-theme`**
`wordpress-muplugin`Zend`zend-library`
`zend-extra`
`zend-module`Zikula`zikula-module`
`zikula-theme`Prestashop`prestashop-module`
`prestashop-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"]
        }
    }
}
```

You can also have the same vendor packages with a custom installation path by using the `vendor:` prefix.

```
{
    "extra": {
        "installer-paths": {
            "your/custom/path/{$name}/": ["vendor:my_organization"]
        }
    }
}
```

These 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` to install the dependencies. This will also install the dev dependencies. See [Composer](https://getcomposer.org/doc/03-cli.md#install).
- 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.

Anyone still wanting this capability should consider requiring .

###  Health Score

36

—

LowBetter than 79% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity16

Limited adoption so far

Community28

Small or concentrated contributor base

Maturity73

Established project with proven stability

 Bus Factor2

2 contributors hold 50%+ of commits

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 ~52 days

Recently: every ~109 days

Total

23

Last Release

3898d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/3cc34cde233b660869ff329ed8e20df611f75dfb61aab3e30889ac153d3e5e61?d=identicon)[c9s](/maintainers/c9s)

---

Top Contributors

[![shama](https://avatars.githubusercontent.com/u/99604?v=4)](https://github.com/shama "shama (144 commits)")[![Seldaek](https://avatars.githubusercontent.com/u/183678?v=4)](https://github.com/Seldaek "Seldaek (27 commits)")[![niksamokhvalov](https://avatars.githubusercontent.com/u/8028275?v=4)](https://github.com/niksamokhvalov "niksamokhvalov (18 commits)")[![torvitas](https://avatars.githubusercontent.com/u/4253100?v=4)](https://github.com/torvitas "torvitas (13 commits)")[![atkrad](https://avatars.githubusercontent.com/u/351364?v=4)](https://github.com/atkrad "atkrad (8 commits)")[![GromNaN](https://avatars.githubusercontent.com/u/400034?v=4)](https://github.com/GromNaN "GromNaN (6 commits)")[![sagikazarmark](https://avatars.githubusercontent.com/u/1226384?v=4)](https://github.com/sagikazarmark "sagikazarmark (5 commits)")[![RobLoach](https://avatars.githubusercontent.com/u/25086?v=4)](https://github.com/RobLoach "RobLoach (5 commits)")[![rchavik](https://avatars.githubusercontent.com/u/39490?v=4)](https://github.com/rchavik "rchavik (5 commits)")[![ADmad](https://avatars.githubusercontent.com/u/142658?v=4)](https://github.com/ADmad "ADmad (4 commits)")[![butschster](https://avatars.githubusercontent.com/u/773481?v=4)](https://github.com/butschster "butschster (4 commits)")[![gulaandrij](https://avatars.githubusercontent.com/u/2658746?v=4)](https://github.com/gulaandrij "gulaandrij (4 commits)")[![jadb](https://avatars.githubusercontent.com/u/33527?v=4)](https://github.com/jadb "jadb (4 commits)")[![onEXHovia](https://avatars.githubusercontent.com/u/3332033?v=4)](https://github.com/onEXHovia "onEXHovia (4 commits)")[![Mihailoff](https://avatars.githubusercontent.com/u/413295?v=4)](https://github.com/Mihailoff "Mihailoff (3 commits)")[![JeroenDeDauw](https://avatars.githubusercontent.com/u/146040?v=4)](https://github.com/JeroenDeDauw "JeroenDeDauw (3 commits)")[![aimeos](https://avatars.githubusercontent.com/u/8647429?v=4)](https://github.com/aimeos "aimeos (3 commits)")[![Potherca](https://avatars.githubusercontent.com/u/195757?v=4)](https://github.com/Potherca "Potherca (3 commits)")[![fabian](https://avatars.githubusercontent.com/u/13346?v=4)](https://github.com/fabian "fabian (3 commits)")[![daftspunk](https://avatars.githubusercontent.com/u/1392869?v=4)](https://github.com/daftspunk "daftspunk (3 commits)")

---

Tags

symfonylaravelwordpressdrupalinstallerzendpiwikcakephpcodeigniterfuelphplithiumphpbbppisilverstripemoodlekohanamakomagentoaglroundcubemediawikichefcroogodokuwikipuppetmoduleworkannotatecmsbitrixzikulaconcrete5elggHuradshopwareMODX EvoOXIDWolfCMSDolibarrSMFgravTheliajoomlaCrafttypo3aimeos

###  Code Quality

TestsPHPUnit

### Embed Badge

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

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

###  Alternatives

[composer/installers

A multi-framework Composer library installer

1.4k143.6M6.7k](/packages/composer-installers)[drupal/core-composer-scaffold

A flexible Composer project scaffold builder.

5344.1M552](/packages/drupal-core-composer-scaffold)[mnsami/composer-custom-directory-installer

A composer plugin, to help install packages of different types in custom paths.

1465.4M61](/packages/mnsami-composer-custom-directory-installer)[drupal/core-project-message

Adds a message after Composer installation.

2124.7M200](/packages/drupal-core-project-message)[event4u/data-helpers

Framework-agnostic PHP library for data mapping, DTOs and utilities. Includes DataMapper, SimpleDto/LiteDto, DataAccessor/Mutator/Filter and helper classes (MathHelper, EnvHelper, etc.). Works with Laravel, Symfony/Doctrine or standalone PHP.

1431.1k](/packages/event4u-data-helpers)

PHPackages © 2026

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