使用composer从github安装,在github中没有composer.json

时间:2014-06-10 11:52:22

标签: cakephp github composer-php

我尝试使用Composer安装插件CakePHP-CSV。我从ProLoser / CakePHP-CSV分叉。 我不想在Vendor中安装它,但是在Plugin文件夹中并且使用Csv的名称,而不是默认的插件名称。我尝试在composer.json中使用extra,但是我尝试过将它安装在项目的Vendor文件夹中。

"repositories": [
    {
        "type": "package",
        "package": {
            "name": "CakePHP-CSV/Csv",
            "version": "dev-master",
            "source": {
                "url": "https://github.com/sela/CakePHP-CSV",
                "type": "git",
                "reference": "origin/master"
            }
        }
    }
],
"require": {
    "CakePHP-CSV/Csv": "dev-master",
},
"config": {
    "vendor-dir": "Vendor"
},
"extra": {
    "installer-paths": {
        "Plugin/Cvs": ["Plugin/cvs"]
    }
}            

2 个答案:

答案 0 :(得分:1)

您需要让您的包依赖于composer/installers

来自Composer's documentation

  

如果您是软件包作者并希望将软件包安装到自定义目录,只需要composer/installers并设置相应的type。如果您的软件包适用于CakePHP,Drupal或WordPress等特定框架,则这种情况很常见。以下是WordPress主题的示例composer.json文件:

{
    "name": "you/themename",
    "type": "wordpress-theme",
    "require": {
        "composer/installers": "~1.0"
    }
}

后来(我在重要部分添加了斜体):

  

作为软件包使用者,您可以通过配置installer-paths extra来为需要编辑器/安装程序的软件包设置或覆盖安装路径。一个有用的示例是Drupal多站点设置,其中包应该安装到您的站点子目录中。

请注意extra is simply a place to put arbitrary data

  

scripts消费的任意额外数据。

     

这实际上可以是任何事情。要从脚本事件处理程序中访问它,您可以执行以下操作:

$extra = $event->getComposer()->getPackage()->getExtra();

第二部分非常重要;某些东西必须检索额外数据并用它做一些事情。在这种情况下,某些东西是composer/installers

答案 1 :(得分:0)

我需要更多代码空间,所以我自己回答。以下代码有效,我不需要分叉代码。

"repositories": [
    {
        "type": "package",
        "package": {
            "name": "ProLoser/CakePHP-CSV",
            "version": "1.0",
            "type": "cakephp-plugin",
            "dist": {
                "url": "https://github.com/ProLoser/CakePHP-CSV/archive/master.zip",
                "type": "zip"
            }
        }
    }
],
"require": {
    "composer/installers": "~1.0.0",
    "ProLoser/CakePHP-CSV": "1.*"
},
"config": {
    "vendor-dir": "Vendor"
}