instalar desde github usando compositor y no composer.json en github

Intento instalar el complemento CakePHP-CSV usando Composer. Lo bifurqué de ProLoser / CakePHP-CSV. No quiero instalarlo en Proveedor, sino en la carpeta Plugin y con el nombre de Csv y no el pnetworkingeterminado que es el nombre del complemento. Traté de usar el extra en composer.json, pero lo que sea que intenté lo instala en la carpeta del proveedor del proyecto.

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

Debes hacer que tu package dependa de composer/installers .

De la documentation del Compositor :

Si usted es un autor de packages y desea que su package se instale en un directory personalizado, simplemente requiera composer/installers y configure el type apropiado. Esto es común si su package está destinado a un marco específico como CakePHP, Drupal o WordPress. Aquí hay un ejemplo de file composer.json para un tema de WordPress:

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

Y más tarde (he añadido cursivas a la parte importante):

Como consumidor de packages , puede configurar o anular la ruta de installation de un package que requiere composer / installers configurando el installer-paths extra. Un ejemplo útil sería una configuration de varios sitios de Drupal donde el package debe instalarse en el subdirectory de su sitio.

Tenga en count que extra es simplemente un lugar para poner datos arbitrarios :

Datos extra arbitrarios para el consumo de scripts .

Esto puede ser virtualmente cualquier cosa. Para acceder desde un controller de events de script, puede hacer:

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

La segunda parte es muy importante; algo tiene que recuperar los datos adicionales y hacer algo con eso . En este caso, algo es composer/installers .

Necesitaba más espacio para el código, así que me respondí a mí mismo. El siguiente código funcionó y no tuve que bifurcar el código.

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