corneltek / installers
多框架 Composer 库安装器
Requires
- composer-plugin-api: 1.0.0
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
当前支持的包类型:
稳定的类型以粗体显示,这意味着那些类型的安装路径不会改变。对这些类型的任何调整都需要创建全新的类型,以涵盖所需的变化。
示例 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
消费包,您可以使用以下额外的配置来覆盖安装路径
{ "extra": { "installer-paths": { "your/custom/path/{$name}/": ["shama/ftp", "vendor/package"] } } }
包类型可以具有带有 type:
前缀的自定义安装路径。
{ "extra": { "installer-paths": { "your/custom/path/{$name}/": ["type:wordpress-plugin"] } } }
您还可以使用 vendor:
前缀为相同的供应商包使用自定义安装路径。
{ "extra": { "installer-paths": { "your/custom/path/{$name}/": ["vendor:my_organization"] } } }
这些将使用您为列出的每个包指定的自定义路径。您可以在路径中使用以下变量: {$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
以安装依赖项。这将也会安装开发依赖项。请参阅 Composer。 - 使用命令
phpunit
运行测试。请参阅 PHPUnit。 - 创建一个分支,提交代码,并将其推送到我们的仓库,然后发送我们一个拉取请求。
为确保代码库的一致性,请确保代码遵循我们从Symfony借用的编码规范。
如果您想帮忙,请查看以下问题列表。
我们应该允许动态包类型或路径吗?不。
这是什么意思?允许包作者决定包将被安装的位置,无论是通过在他们的composer.json
中直接设置路径,还是通过动态包类型:"type": "framework-install-here"
。
这已经被提出多次。甚至早期实施过一次,然后被移除。installers
不会这样做,因为这会允许单个包作者在未经用户同意的情况下删除整个文件夹。然后那个用户会来这里对我们大喊。
任何仍然想要这种功能的人应该考虑要求https://github.com/oomphinc/composer-installers-extender。