travis/composer-installers

多框架 Composer 库安装程序

安装: 511

依赖者: 1

建议者: 0

安全: 0

星星: 0

分支: 0

类型:composer-installer


README

Build Status

这是供 PHP 包作者在他们的 composer.json 中使用的。它将根据指定的包类型将他们的包安装到正确的位置。

installers 的目标是成为一个简单的包类型安装路径映射。用户还可以按包定制安装路径,包作者可以在安装时修改包名。

installers 不打算取代所有自定义安装程序。如果你的包需要特殊的安装处理,那么请创建一个自定义安装程序来处理它。

原生支持的框架:

以下框架与 Composer 原生兼容,并将安装到默认的 vendor 目录。对于这些框架的包,不需要 composer/installers 来安装

  • Aura
  • Symfony2
  • Yii
  • Yii2

当前支持的包类型:

稳定类型以 粗体 标记,这意味着那些类型的安装路径将不会改变。对那些类型的任何调整都需要创建全新的类型,该类型将涵盖所需的变化。

框架类型
Aimeosaimeos-extension
Asgardasgard-module
asgard-theme
AGLagl-module
Bonefishbonefish-package
AnnotateCmsannotatecms-module
annotatecms-component
annotatecms-service
Bitrixbitrix-module
bitrix-component
bitrix-theme
CakePHP 2+cakephp-plugin
Chefchef-cookbook
chef-role
CCFrameworkccframework-ship
ccframework-theme
CodeIgnitercodeigniter-library
codeigniter-third-party
codeigniter-module
concrete5concrete5-block
concrete5-package
concrete5-theme
concrete5-update
Craftcraft-plugin
Croogocroogo-plugin
croogo-theme
DokuWikidokuwiki-plugin
dokuwiki-template
Dolibarrdolibarr-module
Drupaldrupal-module
drupal-theme

drupal-library
drupal-profile
drupal-drush
Elggelgg-plugin
FuelPHP v1.xfuel-module
fuel-package<br/>fuel-theme
FuelPHP v2.xfuelphp-component
Gravgrav-plugin
grav-theme
Huradhurad-plugin
hurad-theme
Joomlajoomla-component
joomla-module
joomla-template
joomla-plugin
joomla-library
Kirbykirby-plugin
KodiCMSkodicms-plugin
kodicms-media
Kohanakohana-module
Laravellaravel-library
Lithiumlithium-library
lithium-source
Magentomagento-library
magento-skin
magento-theme
Makomako-package
MODX Evomodxevo-snippet
modxevo-plugin
modxevo-module
modxevo-template
modxevo-lib
MediaWikimediawiki-extension
Octoberoctober-module
october-plugin
october-theme
OXIDoxid-module
oxid-theme
oxid-out
MODULEWorkmodulework-module
Moodlemoodle-* (请检查源代码以获取所有支持的类型)
Piwikpiwik-plugin
phpBBphpbb-extension
phpbb-style
phpbb-language
Pimcorepimcore-plugin
PPIppi-module
Puppetpuppet-module
REDAXOredaxo-addon
Roundcuberoundcube-plugin
shopwareshopware-backend-plugin<br/>shopware-core-plugin<br/>shopware-frontend-plugin<br/>shopware-theme
SilverStripesilverstripe-module
silverstripe-theme
SMFsmf-module
smf-theme
symfony1symfony1-plugin
Tusktusk-task
tusk-command
tusk-asset
TYPO3 Flowtypo3-flow-package
typo3-flow-framework
typo3-flow-plugin
typo3-flow-site
typo3-flow-boilerplate
typo3-flow-build
TYPO3 CMStypo3-cms-extension
Wolf CMSwolfcms-plugin
WordPresswordpress-plugin
wordpress-theme

wordpress-muplugin
Zendzend-library
zend-extra
zend-module
Zikulazikula-module
zikula-theme
Prestashopprestashop-module
prestashop-theme

示例 composer.json 文件

这是对 CakePHP 插件的示例。在您的 composer.json 文件中需要设置的重要部分是 "type": "cakephp-plugin",它描述了您的包是什么,以及 "require": { "composer/installers": "~1.0" },它告诉 composer 加载自定义安装程序。

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

当用户运行 php composer.phar install 命令时,这将安装您的包到 CakePHP 应用的 Plugin/Ftp/ 文件夹。

因此,请将您的包提交到 packagist.org

自定义安装路径

如果您正在使用 composer/installers 消费包,您可以通过在您的 composer.json 中添加以下额外内容来覆盖安装路径

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

包类型可以有自定义安装路径,以 type: 前缀开始。

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

这将为列出的每个包使用您自定义的路径。您可以在路径中使用以下变量: {$name}{$vendor}{$type}

自定义安装名称

如果您是包作者,并且需要在安装时使用不同的包名称,请考虑使用 installer-name 额外选项。

例如,您有一个名为 shama/cakephp-ftp 的包,类型为 cakephp-plugin。使用 composer/installers 安装将安装到路径 Plugin/CakephpFtp。由于严格的命名约定,您作为包作者实际上需要包被命名为并安装到 Plugin/Ftp。使用以下配置在您的 composer.json 中将允许这样做

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

请注意,在 installer-name 中输入的名称将是最终的,并且不会变形。

贡献!

  • 分支和克隆.
  • 运行命令 php composer.phar install --dev 来安装开发依赖项。参见 Composer
  • 使用命令 phpunit 来运行测试。参见 PHPUnit
  • 创建分支,提交,推送并给我们发送一个 pull request

为了确保一致的代码库,您应该确保代码遵循我们借鉴自 Symfony 的 Coding Standards

如果您想帮忙,请查看 issues 列表。

我们应该允许动态包类型或路径吗? 不。

它们是什么?允许包作者确定包将安装的位置,无论是通过在他们的 composer.json 中直接设置路径,还是通过动态包类型:"type": "framework-install-here"

这已经被提出过很多次。甚至早期实现过一次,然后又移除了。因为这将允许单个包作者在不经用户同意的情况下删除整个文件夹,然后那个用户会来这里抱怨。