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-moduleasgard-theme |
| AGL | agl-module |
| Bonefish | bonefish-package |
| AnnotateCms | annotatecms-moduleannotatecms-componentannotatecms-service |
| Bitrix | bitrix-modulebitrix-componentbitrix-theme |
| CakePHP 2+ | cakephp-plugin |
| Chef | chef-cookbookchef-role |
| CCFramework | ccframework-shipccframework-theme |
| CodeIgniter | codeigniter-librarycodeigniter-third-partycodeigniter-module |
| concrete5 | concrete5-blockconcrete5-packageconcrete5-themeconcrete5-update |
| Craft | craft-plugin |
| Croogo | croogo-plugincroogo-theme |
| DokuWiki | dokuwiki-plugindokuwiki-template |
| Dolibarr | dolibarr-module |
| Drupal | drupal-moduledrupal-themedrupal-librarydrupal-profiledrupal-drush |
| Elgg | elgg-plugin |
| FuelPHP v1.x | fuel-modulefuel-package<br/>fuel-theme |
| FuelPHP v2.x | fuelphp-component |
| Grav | grav-plugingrav-theme |
| Hurad | hurad-pluginhurad-theme |
| Joomla | joomla-componentjoomla-modulejoomla-templatejoomla-pluginjoomla-library |
| Kirby | kirby-plugin |
| KodiCMS | kodicms-pluginkodicms-media |
| Kohana | kohana-module |
| Laravel | laravel-library |
| Lithium | lithium-librarylithium-source |
| Magento | magento-librarymagento-skinmagento-theme |
| Mako | mako-package |
| MODX Evo | modxevo-snippetmodxevo-pluginmodxevo-modulemodxevo-templatemodxevo-lib |
| MediaWiki | mediawiki-extension |
| October | october-moduleoctober-pluginoctober-theme |
| OXID | oxid-moduleoxid-themeoxid-out |
| MODULEWork | modulework-module |
| Moodle | moodle-* (请检查源代码以获取所有支持的类型) |
| Piwik | piwik-plugin |
| phpBB | phpbb-extensionphpbb-stylephpbb-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-modulesilverstripe-theme |
| SMF | smf-modulesmf-theme |
| symfony1 | symfony1-plugin |
| Tusk | tusk-tasktusk-commandtusk-asset |
| TYPO3 Flow | typo3-flow-packagetypo3-flow-frameworktypo3-flow-plugintypo3-flow-sitetypo3-flow-boilerplatetypo3-flow-build |
| TYPO3 CMS | typo3-cms-extension |
| Wolf CMS | wolfcms-plugin |
| WordPress | wordpress-pluginwordpress-themewordpress-muplugin |
| Zend | zend-libraryzend-extrazend-module |
| Zikula | zikula-modulezikula-theme |
| Prestashop | prestashop-moduleprestashop-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"。
这已经被提出过很多次。甚至早期实现过一次,然后又移除了。因为这将允许单个包作者在不经用户同意的情况下删除整个文件夹,然后那个用户会来这里抱怨。