A Multi-Framework Composer Library Installer

Overview

A Multi-Framework Composer Library Installer

Continuous Integration

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:

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

Alternative to custom installers with Composer 2.1+

As of Composer 2.1, the Composer\InstalledVersions class has a getInstalledPackagesByType method which can let you figure out at runtime which plugins/modules/extensions are installed.

It is highly recommended to use that instead of building new custom installers if you are building a new application. This has the advantage of leaving all vendor code in the vendor directory, and not requiring custom installer code.

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.

Framework Types
Akaunting akaunting-module
Asgard asgard-module
asgard-theme
Attogram attogram-module
AGL agl-module
Bonefish bonefish-package
AnnotateCms annotatecms-module
annotatecms-component
annotatecms-service
Bitrix bitrix-module (deprecated)
bitrix-component (deprecated)
bitrix-theme (deprecated)

bitrix-d7-module
bitrix-d7-component
bitrix-d7-template
CakePHP 2+ cakephp-plugin
Chef chef-cookbook
chef-role
CiviCrm civicrm-ext
CCFramework ccframework-ship
ccframework-theme
Cockpit cockpit-module
CodeIgniter codeigniter-library
codeigniter-third-party
codeigniter-module
concrete5 concrete5-core
concrete5-package
concrete5-theme
concrete5-block
concrete5-update
Croogo croogo-plugin
croogo-theme
Decibel decibel-app
Dframe dframe-module
DokuWiki dokuwiki-plugin
dokuwiki-template
Dolibarr dolibarr-module
Drupal drupal-core
drupal-module
drupal-theme

drupal-library
drupal-profile
drupal-database-driver
drupal-drush
drupal-custom-theme
drupal-custom-module
drupal-custom-profile
drupal-drupal-multisite
drupal-console
drupal-console-language
drupal-config
Elgg elgg-plugin
Eliasis eliasis-component
eliasis-module
eliasis-plugin
eliasis-template
ExpressionEngine 3 ee3-addon
ee3-theme
eZ Platform ezplatform-assets
ezplatform-meta-assets
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
iTop itop-extension
Kanboard kanboard-plugin
Known known-plugin
known-theme
known-console
KodiCMS kodicms-plugin
kodicms-media
Kohana kohana-module
Lan Management System lms-plugin
lms-template
lms-document-template
lms-userpanel-module
Laravel laravel-library
Lavalite lavalite-theme
lavalite-package
Lithium lithium-library
lithium-source
Magento magento-library
magento-skin
magento-theme
majima majima-plugin
Mako mako-package
MantisBT mantisbt-plugin
Mautic mautic-core
mautic-plugin
mautic-theme
Maya maya-module
MODX modx-extra
MODX Evo modxevo-snippet
modxevo-plugin
modxevo-module
modxevo-template
modxevo-lib
MediaWiki mediawiki-extension
Miaoxing miaoxing-plugin
October october-module
october-plugin
october-theme
OntoWiki ontowiki-extension
ontowiki-theme
ontowiki-translation
OXID oxid-module
oxid-theme
oxid-out
Osclass osclass-plugin
osclass-theme
osclass-language
MODULEWork modulework-module
Moodle moodle-* (Please check source for all supported types)
Pantheon quicksilver-script
quicksilver-module
Piwik piwik-plugin
Phifty phifty-bundle
phifty-framework
phifty-library
phpBB phpbb-extension
phpbb-style
phpbb-language
Plentymarkets plentymarkets-plugin
PPI ppi-module
Prestashop prestashop-module
prestashop-theme
Puppet puppet-module
Porto porto-container
ProcessWire processwire-module
RadPHP radphp-bundle
REDAXO redaxo-addon
REDAXO bestyle-plugin redaxo-bestyle-plugin
REDAXO V5.* redaxo5-addon
REDAXO V5.* bestyle-plugin redaxo5-bestyle-plugin
ReIndex reindex-plugin
reindex-theme
Roundcube roundcube-plugin
shopware shopware-backend-plugin
shopware-core-plugin
shopware-frontend-plugin
shopware-theme
shopware-plugin
shopware-frontend-theme
SilverStripe silverstripe-module
silverstripe-theme
SiteDirect sitedirect-module
sitedirect-plugin
SMF smf-module
smf-theme
Starbug starbug-module
starbug-theme
starbug-custom-module
starbug-custom-theme
SyDES sydes-module
sydes-theme
Sylius sylius-theme
TAO tao-extension
TastyIgniter tastyigniter-extension
tastyigniter-theme
Tusk tusk-task
tusk-command
tusk-asset
UserFrosting userfrosting-sprinkle
Vanilla vanilla-plugin
vanilla-theme
Vgmcp vgmcp-bundle
vgmcp-theme
WHMCS whmcs-addons
whmcs-fraud
whmcs-gateways
whmcs-notifications
whmcs-registrars
whmcs-reports
whmcs-security
whmcs-servers
whmcs-social
whmcs-support
whmcs-templates
whmcs-includes
Winter CMS winter-module
winter-plugin
winter-theme
Wolf CMS wolfcms-plugin
WordPress wordpress-plugin
wordpress-theme

wordpress-muplugin
wordpress-dropin
YAWIK yawik-module
Zend zend-library
zend-extra
zend-module
Zikula zikula-module
zikula-theme

Example composer.json 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!

Custom Install Paths

If you are requiring a package which has one of the supported types 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"]
        }
    }
}

You can determine a non-standard installation path for all packages of a particular type with the type: prefix. The type must be one of types listed on the supported list above.

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

You can also install all packages by a particular vendor to a custom installation path by using the vendor: prefix. The path will still only apply to packages by the vendor with a type in the supported list.

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

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

Note: If multiple custom installer-paths match for the same package, the first one which matches will be used.

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.

Disabling installers

There may be time when you want to disable one or more installers from composer/installers. For example, if you are managing a package or project that uses a framework specific installer that conflicts with composer/installers but also have a dependency on a package that depends on composer/installers.

Installers can be disabled for your project by specifying the extra installer-disable property. If set to true, "all", or "*" all installers will be disabled.

{
    "extra": {
        "installer-disable": true
    }
}

Otherwise a single installer or an array of installers may be specified.

{
    "extra": {
        "installer-disable": [
            "cakephp",
            "drupal"
        ]
    }
}

Note: Using a global disable value (true, "all", or "*") will take precedence over individual installer names if used in an array. The example below will disable all installers.

{
    "extra": {
        "installer-disable": [
          "drupal",
          "all"
        ]
    }
}

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 https://github.com/oomphinc/composer-installers-extender.

Comments
  • Adhering to lithium php conventions

    Adhering to lithium php conventions

    The lithium community uses the convention of naming our plugins/extentions li3*, when discussing the inclusion of composer we decided to adhere to this convention while using installer types for composer.

    https://github.com/UnionOfRAD/lithium/issues/285#issuecomment-4347718

    opened by joseym 22
  • Remove TYPO3 again

    Remove TYPO3 again

    In August 2013 TYPO3 was added to composer/installers here as a first step for TYPO3's Composer support. However, as this was never sufficient for TYPO3 and never worked properly, the TYPO3 Core-Dev Team wrote its own installer and in February 2014 the first version was released. The two plug-ins, however, naturally clashed, and as more and more problems arose, a conflict was introduced on the TYPO3 side in November 2015. But as this caused new problems with packages relying on composer/installers, TYPO3 was removed again from composer/installers in January 2016.

    As a result, a user complained and added TYPO3 again. But now we had a version of composer/installers without TYPO3 and we were able to relax our conflict definition a bit. Now it was possible to use our installer together with composer/installers and everyone was happy again.

    Then came the release of Composer 2 a month ago and since there is no version compatible to v2 without TYPO3, the problem arised again. E.g. Aimeos and TYPO3 can't be installed with Composer 2 and Aimeos has opened an issue with us which we are not able to solve in our installer.

    We currently see the following solutions:

    1. Remove TYPO3 from composer/installers. Back in 2016 we were criticized that there was not enough time for a migration to TYPO3's installer. Now over 4 years have passed and this argument is or should be invalidated. But as we noticed back then, this is actually a breaking change and so you should actually publish a v2 of composer/installers after removing TYPO3 again, which is not very nice.
    2. Introducing an event during the initialization of the installers as prepared in my PR. This would allow us to switch off the installer here for TYPO3 in our installer. Up to now, this has only been possible if our users deactivate the installer in their root composer.json via extra.installer-disable, which is an unreasonable demand and very error-prone. That's why I created this draft, which would allow disabling installers from within plugins. You have to tell me if this is desired from your side at all or maybe this contradicts your concept here.
    3. Aimeos creates its own installer, either generally for all projects, they support not only TYPO3, or with a special installer for TYPO3 only.

    In the opinion of the TYPO3 Core-Dev Team solution 1 would be the cleanest and the right one but we are open for a discussion here.

    References:

    • #96
    • #281
    • #300
    • #466
    • #469

    CC:

    • @bmack
    • @naderman
    • @EmiiKhaos
    • @aimeos
    • @mbrodala
    opened by gilbertsoft 20
  • Package path declaration

    Package path declaration

    This may be a better approach to what I was trying to achieve in my WordPress package pull request. Certain cases may be flexible and allow names/locations to be changed. This patch in my case for WordPress allows a custom content directory to be declared, as well as allows the composer root to live outside of the wordpress directory.

    {
        "extra": {
            "package-paths": {
                "wordpress/wp-content/plugins/{$name}/": ["wordpress-plugin"],
                "wordpress/wp-content/themes/{$name}/": ["wordpress-theme"]
            }
        }
    }
    

    Can install all wordpress plugins and themes into the wordpress directory where the actual installation lives, opposed to maintaining an array of each of the package types in the install-paths array along side of the regular requirement declarations.

    This time not limited to only wordpress.

    opened by sbuzonas 18
  • Add ability to install

    Add ability to install "drupal-core" projects to the project root

    Drupal core is to be installed to the project root. A "drupal-core" project would be: http://drupal.org/project/drupal

    I have a fork of it using the "drupal-core" type at https://packagist.org/packages/robloach/drupal .

    opened by RobLoach 18
  • Plugin installation failed, rolling back; Could not delete

    Plugin installation failed, rolling back; Could not delete

    I am attempting to install on a Vagrant 2.2.4 VM running Ubuntu/bionic64 (Windows 10 Pro host machine). Other packages install fine, but this one returns "Plugin installation failed," attempts to roll back, and then fails to delete the contents of its installation directory.

    Vagrantfile: https://pastebin.com/YQjAuPWL Composer.json https://pastebin.com/Tj1kMehb

    vagrant@ubuntu-bionic:/home/app$ composer update -vvv
    Reading ./composer.json
    Loading config file ./composer.json
    Checked CA file /etc/ssl/certs/ca-certificates.crt: valid
    Executing command (/home/app): git branch --no-color --no-abbrev -v
    Executing command (/home/app): git describe --exact-match --tags
    Executing command (/home/app): git log --pretty="%H" -n1 HEAD
    Executing command (/home/app): hg branch
    Executing command (/home/app): fossil branch list
    Executing command (/home/app): fossil tag list
    Executing command (/home/app): svn info --xml
    Failed to initialize global composer: Composer could not find the config file: /home/vagrant/.config/composer/composer.json
    To initialize a project, please create a composer.json file as described in the https://getcomposer.org/ "Getting Started" section
    Reading /home/app/vendor/composer/installed.json
    Running 1.8.6 (2019-06-11 15:03:05) with PHP 7.2.19-0ubuntu0.18.04.1 on Linux / 4.15.0-51-generic
    Loading composer repositories with package information
    Downloading https://asset-packagist.org/packages.json
    Writing /home/vagrant/.cache/composer/repo/https---asset-packagist.org/packages.json into cache
    Downloading https://repo.packagist.org/packages.json
    Writing /home/vagrant/.cache/composer/repo/https---repo.packagist.org/packages.json into cache
    Updating dependencies (including require-dev)
    Reading /home/vagrant/.cache/composer/repo/https---asset-packagist.org/p-provider-latest-.json from cache
    Reading /home/vagrant/.cache/composer/repo/https---asset-packagist.org/provider-bower-asset$jquery.json from cache
    Reading /home/vagrant/.cache/composer/repo/https---repo.packagist.org/p-provider-2013.json from cache
    Reading /home/vagrant/.cache/composer/repo/https---repo.packagist.org/p-provider-2014.json from cache
    Reading /home/vagrant/.cache/composer/repo/https---repo.packagist.org/p-provider-2015.json from cache
    Reading /home/vagrant/.cache/composer/repo/https---repo.packagist.org/p-provider-2016.json from cache
    Reading /home/vagrant/.cache/composer/repo/https---repo.packagist.org/p-provider-2017.json from cache
    Reading /home/vagrant/.cache/composer/repo/https---repo.packagist.org/p-provider-2018.json from cache
    Reading /home/vagrant/.cache/composer/repo/https---repo.packagist.org/p-provider-2018-07.json from cache
    Reading /home/vagrant/.cache/composer/repo/https---repo.packagist.org/p-provider-2018-10.json from cache
    Reading /home/vagrant/.cache/composer/repo/https---repo.packagist.org/p-provider-2019-01.json from cache
    Reading /home/vagrant/.cache/composer/repo/https---repo.packagist.org/p-provider-2019-04.json from cache
    Reading /home/vagrant/.cache/composer/repo/https---repo.packagist.org/p-provider-archived.json from cache
    Reading /home/vagrant/.cache/composer/repo/https---repo.packagist.org/p-provider-latest.json from cache
    Reading /home/vagrant/.cache/composer/repo/https---repo.packagist.org/provider-bower-asset$jquery.json from cache
    Reading /home/vagrant/.cache/composer/repo/https---asset-packagist.org/provider-bower-asset$jqueryui.json from cache
    Reading /home/vagrant/.cache/composer/repo/https---repo.packagist.org/provider-bower-asset$jqueryui.json from cache
    Reading /home/vagrant/.cache/composer/repo/https---repo.packagist.org/provider-smarty$smarty.json from cache
    Reading /home/vagrant/.cache/composer/repo/https---repo.packagist.org/provider-oomphinc$composer-installers-extender.json from cache
    Reading /home/vagrant/.cache/composer/repo/https---repo.packagist.org/provider-composer$installers.json from cache
    Resolving dependencies through SAT
    Looking at all rules.
    Something's changed, looking at all rules again (pass #1)
    Dependency resolution completed in 0.010 seconds
    Analyzed 508 packages to resolve dependencies
    Analyzed 2183 rules to resolve dependencies
    Package operations: 2 installs, 0 updates, 0 removals
    Installs: composer/installers:v1.6.0, oomphinc/composer-installers-extender:v1.1.1
      - Installing composer/installers (v1.6.0): Reading /home/vagrant/.cache/composer/files/composer/installers/9b12dbb8725af9a9ee8487c67b68262091bb71df.zip from cache
    Loading from cache
     Extracting archiveExecuting command (CWD): unzip -qq  '/home/app/vendor/composer/installers/86ab17ee4b36addbac2f9c610c6203eb' -d '/home/app/vendor/composer/07959a72'
    Plugin installation failed, rolling back
      - Removing composer/installers (v1.6.0)
    
    
      [RuntimeException]
      Could not delete /home/app/vendor/composer/installers/src/Composer:
    
    
    Exception trace:
     () at phar:///usr/local/bin/composer/src/Composer/Util/Filesystem.php:217
     Composer\Util\Filesystem->unlink() at phar:///usr/local/bin/composer/src/Composer/Util/Filesystem.php:170
     Composer\Util\Filesystem->removeDirectoryPhp() at phar:///usr/local/bin/composer/src/Composer/Util/Filesystem.php:137
     Composer\Util\Filesystem->removeDirectory() at phar:///usr/local/bin/composer/src/Composer/Downloader/FileDownloader.php:238
     Composer\Downloader\FileDownloader->remove() at phar:///usr/local/bin/composer/src/Composer/Downloader/DownloadManager.php:299
     Composer\Downloader\DownloadManager->remove() at phar:///usr/local/bin/composer/src/Composer/Installer/LibraryInstaller.php:224
     Composer\Installer\LibraryInstaller->removeCode() at phar:///usr/local/bin/composer/src/Composer/Installer/LibraryInstaller.php:137
     Composer\Installer\LibraryInstaller->uninstall() at phar:///usr/local/bin/composer/src/Composer/Installer/PluginInstaller.php:66
     Composer\Installer\PluginInstaller->install() at phar:///usr/local/bin/composer/src/Composer/Installer/InstallationManager.php:173
     Composer\Installer\InstallationManager->install() at phar:///usr/local/bin/composer/src/Composer/Installer/InstallationManager.php:160
     Composer\Installer\InstallationManager->execute() at phar:///usr/local/bin/composer/src/Composer/Installer.php:595
     Composer\Installer->doInstall() at phar:///usr/local/bin/composer/src/Composer/Installer.php:229
     Composer\Installer->run() at phar:///usr/local/bin/composer/src/Composer/Command/UpdateCommand.php:163
     Composer\Command\UpdateCommand->execute() at phar:///usr/local/bin/composer/vendor/symfony/console/Command/Command.php:245
     Symfony\Component\Console\Command\Command->run() at phar:///usr/local/bin/composer/vendor/symfony/console/Application.php:835
     Symfony\Component\Console\Application->doRunCommand() at phar:///usr/local/bin/composer/vendor/symfony/console/Application.php:185
     Symfony\Component\Console\Application->doRun() at phar:///usr/local/bin/composer/src/Composer/Console/Application.php:258
     Composer\Console\Application->doRun() at phar:///usr/local/bin/composer/vendor/symfony/console/Application.php:117
     Symfony\Component\Console\Application->run() at phar:///usr/local/bin/composer/src/Composer/Console/Application.php:104
     Composer\Console\Application->run() at phar:///usr/local/bin/composer/bin/composer:61
     require() at /usr/local/bin/composer:24
    
    update [--prefer-source] [--prefer-dist] [--dry-run] [--dev] [--no-dev] [--lock] [--no-custom-installers] [--no-autoloader] [--no-scripts] [--no-progress] [--no-suggest] [--with-dependencies] [--with-all-dependencies] [-v|vv|vvv|--verbose] [-o|--optimize-autoloader] [-a|--classmap-authoritative] [--apcu-autoloader] [--ignore-platform-reqs] [--prefer-stable] [--prefer-lowest] [-i|--interactive] [--root-reqs] [--] [<packages>]...
    
    opened by Tanoro 17
  • Add support for WordPress Must Use (MU) Plugins

    Add support for WordPress Must Use (MU) Plugins

    Adds support for the WordPress must use plugins directory (mu-plugins). This directory is for WordPress plugins that are automatically loaded. This new installer type is called wordpress-muplugin.

    See http://codex.wordpress.org/Must_Use_Plugins for more information about this directory.

    opened by bradydoll 16
  • Review list of installers and which one are still needed

    Review list of installers and which one are still needed

    If we do a 2.0 release, we should make sure any installers which are not needed anymore get cleaned up. This will require a community effort though as we have no clue about most of the projects having custom installers here.

    If you know of one which needs breaking changes or could be removed as it's unnecessary, please say so here. You can find the complete list in the README.

    Already known/planned to be removed are:

    Also noteworthy to most people reading this is that we are looking to improve even further the data available at runtime for users of Composer 2 (or 2.1+ in this case), which probably should help the use case of applications registering extensions dynamically at runtime: https://github.com/composer/composer/issues/9648

    question 
    opened by Seldaek 13
  • Add concrete5-core

    Add concrete5-core

    This adds the installer type concrete5-core to support the installation of concrete5 (version 5.7+) via Composer as discussed in https://github.com/concrete5/concrete5-5.7.0/issues/360.

    The idea is similar to what Drupal is doing with drupal-core, but instead to core/ concrete5 is always installed to concrete/.

    I will create a separate PR in the concrete5 repository to adjust the composer.json file.

    opened by fabian 13
  • Updating CakePHPInstaller for upcoming version 3.0

    Updating CakePHPInstaller for upcoming version 3.0

    For the upcoming CakePHP 3, the location of cakephp-plugin will be changed from Plugin to plugins.

    This change enables this by overriding getLocations() and adjusting CakePHPInstaller::$locations according to the required cakephp/cakephp version.

    In the getLocations() implementation, please let me know if there's a better way to get the required cakephp/cakephp Package object. And also, whether the version comparison code is correct/incorrect.

    Also noticed that we never pass the Composer object when instantiating a new Installer object, so I add it in b072373.

    opened by rchavik 13
  • Allows for custom name that is different from package name?

    Allows for custom name that is different from package name?

    I'm not sure if this is related to #10, but I feel it is different.

    Currently installers determine that the name for a package (for example, the name for a CakePHP plugin) to simply be $prettyName. I feel that that may not always be the best name for a package.

    For example, I have a this Git repo: https://github.com/uzyn/cakephp-aws-datasources. Its name at composer.json is uzyn/cakephp-aws-datasources. However, when it is installed as a CakePHP plugin, I would prefer it to be installed to Plugin/AwsDatasources instead of Plugin/CakephpAwsDatasources.

    I could name my package uzyn/aws-datasources, but that would make it less obvious that it is a CakePHP-related package on both Packagist and GitHub.

    question 
    opened by uzyn 13
  • Add a installer for Laminas project

    Add a installer for Laminas project

    There currently so many custom installers for different types of frameworks but Laminas is missing.

    Laminas will normally install a "Module" into the root of an Laminas Application into module/.

    In some Laminas module package you can use "type": "laminas-module"

    opened by derpixler 0
  • Using vcs repo without composer.json

    Using vcs repo without composer.json

    Hi, I have successfully installed wordpress, defined in composer.json as package - pointing to a zip with a specific version.

    As far as I know it is not possible to reference a Git(Hub) vcs type repository, without composer.json file. It could be done by providing missing metadata in my json file, therefore when upgrading, I would not need to edit the repository information (as is case with the package type).

    Is there any different issue that would arise? I see that composer can already convert git tag to a version number. Thanks

    opened by flowthentic 0
  • Add version to installer-path variables

    Add version to installer-path variables

    Feature request: Some libraries are using versions as sub-paths (e.g. libraries/{$name}/{$version}), presumably to allow for multiple version support. If its easy to expose this as a variable, then this would save some code.

    opened by bwabt 1
  • composer 2.3.5 breaks composer/installers

    composer 2.3.5 breaks composer/installers

    I use composer/installers as part of our roots/bedrock based WordPress multisite codebase. As part of a recent system update, we upgraded composer to version 2.3.5. After running normal deployment process, site was broken. Determined cause to be that WordPress theme and plugins had not been installed to custom locations, just installed into vendor folder. Downgrading to composer 2.1.3 fixed problem. We were running 2.1.3 locally, so that's why we tried that version; did not spend any time trying to identify specific version where defect occurs. Version of composer/installers in production is 1.12.

    opened by aaronredwood 3
  • Want to write a custom path for plug-in package? I don't know how to debug

    Want to write a custom path for plug-in package? I don't know how to debug

    https://github.com/composer/installers/blob/main/src/Composer/Installers/Installer.php For example, how to output 159 lines of print($installpath),

    I don't know how to debug

    opened by ken678 0
Releases(v2.2.0)
  • v2.2.0(Aug 20, 2022)

    What's Changed

    • added matomo-plugin by @codymorgan in https://github.com/composer/installers/pull/514

    Full Changelog: https://github.com/composer/installers/compare/v2.1.1...v2.2.0

    Source code(tar.gz)
    Source code(zip)
  • v2.1.1(Apr 13, 2022)

    What's Changed

    • Fixed TastyIgniter parsing of extra data to use the package being installed instead of the root package (#507)

    Full Changelog: https://github.com/composer/installers/compare/v2.1.0...v2.1.1

    Source code(tar.gz)
    Source code(zip)
  • v2.1.0(Mar 18, 2022)

    Added

    • Added new types (antivirus, customfield, contenttype, dataformat, media, paygw) for Moodle (#497)
    • Added new tastyigniter-module type to TastyIgniter (#503)
    • Added new extra.plugin-modifies-install-path to composer/installers for Composer 2.3 support, see docs if you are writing your own custom installer plugin.
    Source code(tar.gz)
    Source code(zip)
  • v2.0.1(Sep 13, 2021)

  • v1.12.0(Sep 13, 2021)

  • v2.0.0(Aug 4, 2021)

    Alternative to custom installers with Composer 2.1+

    As of Composer 2.1, the Composer\InstalledVersions class has a getInstalledPackagesByType method which can let you figure out at runtime which plugins/modules/extensions are installed.

    It is highly recommended to use that instead of building new custom installers if you are building a new application. This has the advantage of leaving all vendor code in the vendor directory, and not requiring custom installer code.

    Changelog

    Added

    • Type declarations have been added everywhere to support PHPStan level 8 (#491)
    • Added installer for Pantheon Quicksilver modules/scripts #492.
    • Added installer for Akaunting modules #489.

    Changed

    • Minimum supported PHP version is now 7.2 (#491)
    • Installer::getInstallPath() now returns absolute paths instead of relative ones previously (#307)

    Removed

    • Removed support for Kirby
    • Removed support for Symfony1
    • Removed support for Joomla
    • Removed support for TYPO3 CMS
    • Removed support for Craft
    • Removed support for Pimcore
    • Removed support for TYPO3 Flow
    Source code(tar.gz)
    Source code(zip)
  • v2.0.0-alpha1(Jul 23, 2021)

    Added

    • Type declarations have been added everywhere to support PHPStan level 8 (#491)

    Changed

    • Minimum supported PHP version is now 7.2 (#491)
    • Installer::getInstallPath() now returns absolute paths instead of relative ones previously (#307)

    Removed

    • Removed support for Kirby
    • Removed support for Symfony1
    • Removed support for Joomla
    • Removed support for TYPO3 CMS
    • Removed support for Craft
    • Removed support for Pimcore
    Source code(tar.gz)
    Source code(zip)
  • v1.11.0(Apr 28, 2021)

    Added

    • Added installer for TastyIgniter extensions and themes #478.
    • Added installers for Winter CMS #480, #481.
    • Added installer for Miaoxing plugin #482.

    Changed

    • Now using fully qualified theme names in the October CMS #486.
    • Updated MauticInstaller to allow plugins & themes #484.
    Source code(tar.gz)
    Source code(zip)
  • v1.10.0(Jan 14, 2021)

    Added

    • Added handling for LibraryInstaller returning PromiseInterface.
    • Added Moodle document converter, #464.
    • Added installer for Starbug packages, #475.
    • Added installer for Processwire module, #472.

    Fixed

    • Fixed TAO Installer for proper work, #437.
    Source code(tar.gz)
    Source code(zip)
  • v1.9.0(Apr 7, 2020)

  • v1.8.0(Feb 7, 2020)

  • v1.7.0(Aug 12, 2019)

    Added

    • Added support for Redaxo v5, #410.
    • Added TAO extensions installer, #424.
    • Added Know installer, #425.
    • Added support for Drupal Console custom packages and languages, #311.
    • Added Drupal custom profile installation path, #416.
    • Add support drupal-site type, #417.
    • Added customcertelement for Moodle, #408.
    • Added Dframe installer, #404.
    • Added WHMCS installer, #401.

    Fixed

    • Get target-dir from package attributes, #432.

    Deprecated

    • Deprecated Pimcore installer, #400.
    Source code(tar.gz)
    Source code(zip)
  • v1.6.0(Sep 12, 2018)

  • v1.5.0(Dec 29, 2017)

    Added

    • Added WordPress dropin support.
    • Added new types supported for Eliasis.
    • Added support for Phoenix CMS.
    • Added MODX installer.
    • Added Majima instaler.
    • Added SiteDirect installer.
    • Added support optional prefix in OctoberCMS installers.
    • Added PHP 7.2 support.

    Changed

    • Changed remove packages, see #348.

    Fixed

    • Fixed code style, removed unused imports.

    Happy New Year! 🎅🏻

    Source code(tar.gz)
    Source code(zip)
  • v1.4.0(Aug 9, 2017)

    Added

    • Installer for eZ Platform.
    • Installer for UserFrosting.
    • Installer for Osclass.
    • Installer for Lan Management System.

    Changed

    • Added vendor name to package path for Lavalite.
    Source code(tar.gz)
    Source code(zip)
  • v1.3.0(Apr 24, 2017)

    Added

    • Kanboard plugins installer.
    • Porto-SAP installer.
    • Add core to concrete5 installer.
    • Support Moodle "search" plugin type.
    • SyDES installer.
    • iTop installer.
    • Lavalite installer.
    • Module type for Eliasis.
    • Vgmcp installer.
    • OntoWiki installer.
    • The requirements for contributing (CONTRIBUTING.md).
    Source code(tar.gz)
    Source code(zip)
  • v1.2.0(Aug 31, 2016)

    • Added installer for Attogram #314.
    • Added installer for Cockpit #284.
    • Added installer for Plentymarkets #319.
    • Added installer for ReIndex #262.
    • Added missing environments for new Shopware (5.2) Plugin System #321.
    • Added installer for Vanilla #318.
    • Added installer for YAWIK #320.
    Source code(tar.gz)
    Source code(zip)
  • v1.1.0(Jul 5, 2016)

    • Installer for ReIndex #262.
    • Installer for RadPHP #235.
    • Installer for Decibel #283.
    • Installer for Phifty #276.
    • Installer for ExpressionEngine #303.
    • New paths for new Bitrix CMS #309. Old paths is deprecated.
    Source code(tar.gz)
    Source code(zip)
  • v1.0.25(Apr 13, 2016)

  • v1.0.24(Apr 5, 2016)

    • Switch to PSR-4.
    • Added ImageCMS installer.
    • Update Bitrix installer: configuration for setting custom path to directory with kernel.
    • Remove TYPO3 Extension installers #281.
    • Added new types in the Kirby installer: kirby-plugin and kirby-field.
    • Added Mautic installer.
    • Added new types in the Drupal installer: custom-theme and custom-module.
    Source code(tar.gz)
    Source code(zip)
  • v1.0.23(Jan 27, 2016)

Owner
Composer
Composer
Elastic Beanstalk Multi Container PHP-FPM + Nginx Demo App

Elastic Beanstalk Multi Container PHP-FPM + Nginx Demo App This demo app shows you how to run a simple PHP application using the PHP-FPM and Nginx Doc

AWS Samples 141 Sep 18, 2022
Multi files uploader & image resizer

A PHP base class that you can use to upload any file into the server. It is a very lightweight class and highly customizable. You can use this class with any framework or with core PHP.

LCW 3 Aug 22, 2022
CheckIP - A composer module to retrieve information from an IP address

A composer module to retrieve information from an IP address, using geoplugin.net Installation Use composer to install CheckIP composer requir

IsMyStore 1 Aug 9, 2022
While BotMan itself is framework agnostic, BotMan is also available as a bundle with the great Laravel PHP framework.

BotMan Studio About BotMan Studio While BotMan itself is framework agnostic, BotMan is also available as a bundle with the great Laravel PHP framework

BotMan 322 Dec 26, 2022
An automated library management system developed in Laravel 4.2 PHP MVC Framework

An automated system to manage a public library. Admin panel for librarians to control and manage the system easily through an interactive interface.

Prabhakar Gupta 244 Dec 27, 2022
Library JGU is a website created for a university library system information. Made with PHP & TailwindCSS.

Library JGU Library JGU is a website created for a university library system information. Made with PHP & TailwindCSS. Key Features • How To Use • Rel

Azkazikna Ageung Laksana 23 Oct 7, 2022
Laravel-Library-Management-system is nice to management library system...

About Laravel Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experie

Eng Hasan Hajjar 2 Sep 30, 2022
Krayin CRM is a hand tailored CRM framework built on Laravel and Vue.js

Krayin CRM is a hand tailored CRM framework built on some of the hottest opensource technologies such as Laravel (a PHP framework) and Vue.js a progressive Javascript framework.

Krayin CRM 1.1k Jan 3, 2023
The spatial web mapping framework and core-module

Mapbender module This is the Mapbender module, the main-component of the Mapbender application. This module works like a library and can not run for i

Mapbender Development Team 74 Dec 25, 2022
DinoPHP is a web application framework

DinoPHP is a web application framework with expressive. We believe development must be an enjoyable and creative experience. DinoPHP takes the pain out of development by easing common tasks used in many web projects

Ahmed Mohamed Ibrahim 24 Jan 1, 2023
DinoPHP is a web application framework with expressive.

DinoPHP is a web application framework with expressive. We believe development must be an enjoyable and creative experience. DinoPHP takes the pain out of development by easing common tasks used in many web projects

DinoPHP 23 Dec 14, 2022
A framework for building rich, data-driven applications in PHP and MySQL

Xataface A framework for building rich, data-driven applications in PHP and MySQL License GPL Requirements PHP 5.2 or higher MySQL 5 or higher Install

Steve Hannah 129 Dec 13, 2022
Open Source Point of Sale is a web based point of sale application written in PHP using CodeIgniter framework.

Open Source Point of Sale is a web based point of sale application written in PHP using CodeIgniter framework. It uses MySQL as the data back end and has a Bootstrap 3 based user interface.

opensourcepos 2.7k Jan 2, 2023
Public append-only ledger microservice built with Slim Framework

Chronicle is a self-hostable microservice, built with Slim Framework, which enables authorized users to commit arbitrary data to an immutable, append-only public ledger.

Paragon Initiative Enterprises 460 Dec 22, 2022
This is the source code to my website built with the Laravel framework.

About This is the source code to my website built with the Laravel framework. Set-up Simply clone this repository, install composer and node dependenc

Octanna 6 Dec 29, 2021
Open Source Voucher Management System is a web application for manage voucher. used PHP with Laravel Framework and use MySQL for Database.

Voucher Management System is a web application for manage voucher. You can create and manage your voucher. Voucher Management System is used PHP with Laravel Framework and use MySQL for Database.

Artha Nugraha Jonar 34 Sep 17, 2022
Web Application using MVC PHP Framework (LavaLust)

LavaLust Version 2 This is an early release of LavaLust Version 2. You may check the changelog.txt file to see the changes. Overview of Changes in Ve

Noe Dimailig 1 Oct 16, 2021
A blog made with Lumen Framework

A Lumen Blog Your first step towards mastering Lumen. Requirements Docker Installation and usage This is a template repository: don't work directly on

null 13 Nov 16, 2022
flare Manager .flare framework Manager

flare-Manager flare Manager .flare framework Manager Welcome to the flare-Manager install Flare form https://github.com/flare-framework/Flare move ind

Flare framework 1 Aug 14, 2022