我尝试使用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"]
}
}
答案 0 :(得分:1)
您需要让您的包依赖于composer/installers
。
如果您是软件包作者并希望将软件包安装到自定义目录,只需要
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"
}