Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cakephp 使用composer从github安装,github中不使用composer.json_Cakephp_Github_Composer Php - Fatal编程技术网

Cakephp 使用composer从github安装,github中不使用composer.json

Cakephp 使用composer从github安装,github中不使用composer.json,cakephp,github,composer-php,Cakephp,Github,Composer Php,我尝试使用Composer安装插件CakePHP CSV。我从ProLoser/CakePHP-CSV派生了它。 我不想安装在供应商,但在插件文件夹和Csv的名称,而不是默认的一个是插件的名称。我试图在composer.json中使用额外的代码,但不管我怎么做,它都会安装在项目的供应商文件夹中 "repositories": [ { "type": "package", "package": { "name": "CakePHP-C

我尝试使用Composer安装插件CakePHP CSV。我从ProLoser/CakePHP-CSV派生了它。 我不想安装在供应商,但在插件文件夹和Csv的名称,而不是默认的一个是插件的名称。我试图在composer.json中使用额外的代码,但不管我怎么做,它都会安装在项目的供应商文件夹中

"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"]
    }
}            

你需要让你的包裹依赖于你

发件人:

如果您是软件包作者并希望将软件包安装到自定义目录,只需要求
编写器/安装器
并设置相应的
类型
。如果您的软件包是针对特定的框架,如CakePHP、Drupal或WordPress,那么这是很常见的。以下是WordPress主题的composer.json文件示例:

{
    "name": "you/themename",
    "type": "wordpress-theme",
    "require": {
        "composer/installers": "~1.0"
    }
}
后来(我在重要部分添加了斜体):

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

请注意:

脚本
使用的任意额外数据

这几乎可以是任何东西。要从脚本事件处理程序中访问它,可以执行以下操作:

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

第二部分非常重要;有些东西必须检索额外的数据并对其进行处理。在这个例子中,有些东西是
编写者/安装者

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

"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"
}

谢谢首先,您复制了示例composer.json,我需要将composer.json放在哪里?我将代码分叉到自己的存储库中,但是如果我不分叉代码并为插件创建composer.json,有没有办法做到这一点?我的本地计算机上已经有1个composer.json。@SelaYair,有两个相关的
composer.json
文件。第一个是针对包的,这一个必须需要
composer/installers
。通常情况下,包的作者会提供这个,但是这个特定的库似乎没有这样做,所以您可能需要自己创建它。分叉存储库是一种很好的方法,不过您将负责将上游更改合并到分叉中。另一个
composer.json
是适用于您的应用程序的,它取决于CSV库和您需要的任何其他库。您将在此处放置
额外的
/
安装程序路径
位,以重新定位CSV库。请注意,有大量用于创建Composer软件包以及
Composer/installer
的文档。你应该读一读;您可能需要对上游库进行其他更改,以使其运行良好。