eric-chau/installers

支持多框架的Composer库安装器

安装: 510

依赖者: 0

建议者: 0

安全: 0

星标: 0

关注者: 2

分支: 413

类型:composer-installer


README

Build Status

这是为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的包,你可以通过在你的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命名和安装。在你的packagecomposer.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借用的编码规范

如果您想帮忙,请查看问题列表

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

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

这已经被提议多次。甚至在一开始实现过一次,然后又移除了。installers不会这样做,因为这将允许单个包作者在没有用户同意的情况下删除整个文件夹。然后那个用户就会来这里向我们大喊大叫。