travis / composer-installers
多框架 Composer 库安装程序
Requires (Dev)
- composer/composer: 1.0.*@dev
- phpunit/phpunit: 4.1.*
Replaces
- roundcube/plugin-installer: *
- shama/baton: *
README
这是供 PHP 包作者在他们的 composer.json
中使用的。它将根据指定的包类型将他们的包安装到正确的位置。
installers
的目标是成为一个简单的包类型安装路径映射。用户还可以按包定制安装路径,包作者可以在安装时修改包名。
installers
不打算取代所有自定义安装程序。如果你的包需要特殊的安装处理,那么请创建一个自定义安装程序来处理它。
原生支持的框架:
以下框架与 Composer 原生兼容,并将安装到默认的 vendor
目录。对于这些框架的包,不需要 composer/installers
来安装
- Aura
- Symfony2
- Yii
- Yii2
当前支持的包类型:
稳定类型以 粗体 标记,这意味着那些类型的安装路径将不会改变。对那些类型的任何调整都需要创建全新的类型,该类型将涵盖所需的变化。
框架 | 类型 |
---|---|
Aimeos | 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-module drupal-theme drupal-library drupal-profile drupal-drush |
Elgg | elgg-plugin |
FuelPHP v1.x | fuel-module fuel-package <br/>fuel-theme |
FuelPHP v2.x | fuelphp-component |
Grav | grav-plugin grav-theme |
Hurad | hurad-plugin hurad-theme |
Joomla | joomla-component joomla-module joomla-template joomla-plugin joomla-library |
Kirby | kirby-plugin |
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 |
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-* (请检查源代码以获取所有支持的类型) |
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 <br/>shopware-core-plugin <br/>shopware-frontend-plugin <br/>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 |
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 |
示例 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"
。
这已经被提出过很多次。甚至早期实现过一次,然后又移除了。因为这将允许单个包作者在不经用户同意的情况下删除整个文件夹,然后那个用户会来这里抱怨。