2012-09-14 12 views
5

Sto cercando di utilizzare un pacchetto all'interno di un pacchetto ma in qualche modo è failig.Come si dichiara correttamente una dipendenza a un altro pacchetto all'interno di un pacchetto?

"repositories": [ 
    { 
     "type": "vcs", 
     "url": "https://github.com/myname/mybundle" 
    } 
], 
"require": { 
    "php": ">=5.3.3", 
    "symfony/symfony": "2.1.*", 
    (...) 
    "myname/mybundle": "*" 
}, 

questo sembra funzionare finora. Ma non riesco a capire come dichiarare un'altra dipendenza all'interno di "myname/mybundle".

Ho provato quanto segue nel file composer.json di mionome/mybundle ma nessuno di loro ha lavorato :(

"repositories": [ 
    { 
     "type": "vcs", 
     "url": "url": "https://github.com/drymek/PheanstalkBundle" 
    } 
], 
"require": { 
    (...) 
    "drymek/PheanstalkBundle": "dev-master" 
} 

e

"repositories": [ 
    { 
     "type": "package", 
     "package": { 
      "name": "drymek/PheanstalkBundle", 
      "version": "dev-master", 
      "source": { 
       "url": "https://github.com/drymek/PheanstalkBundle.git", 
       "type": "git", 
       "reference": "master" 
      } 
     } 
    } 
], 
"require": { 
    (...) 
    "drymek/PheanstalkBundle": "dev-master" 
} 

quando ho rum composer.phar update tutto quello che ottiene è

- myname/mybundle dev-master requires drymek/pheanstalkbundle dev-master -> no matching package found.

+0

Il secondo repository è a https: //github.com/digitalpioneers/pheanstalk o all'indirizzo https://github.com/drymek/PheanstalkBundle? –

+0

whoops sorry drymek/PheanstalkBundle ... corretto ora;) – Senad

risposta

5

OK, ho trovato una risposta here

Si afferma: Repositories are not resolved recursively. You can only add them to your main composer.json. Repository declarations of dependencies' composer.jsons are ignored.

Questo è troppo male ... ma ora almeno so dove mettere la mia dependeny (nel file composer.json root)

+0

Ciò significa che il compositore non è ** quello ** molto meglio del vecchio file deps. Mi chiedo se sia una cattiva idea risolverlo ricorsivamente, o è solo che non lo hanno ancora implementato. – Jens

+0

Almeno puoi prendere in considerazione il file composer.json del tuo pacchetto. Sto affrontando un problema davvero strano in uno scenario simile. I miei progetti devono recuperare alcuni pacchetti zip personalizzati, in questi pacchetti un file composer.json definisce altri requisiti. I repository di questi requisiti sono dichiarati nel file root composer.json. Il fatto è che dopo che il file zip è stato scaricato, scompattato e inserito nella directory del venditore, il compositore ignora totalmente il suo compositore.json dove sono definiti i requisiti del pacchetto ... Qualche idea? –

+0

hey giuliano, scusami ma non so la risposta a questo ... ma come vedo tu hai comunque una risposta sul filo. ;) http://stackoverflow.com/questions/15023126/composer-ignoring-zip-dependecies-composer-json-file – Senad

0

per le dipendenze del pacco, si prega di consultare la mia libreria https://github.com/AshleyDawson/MultiBundle. Come esempio, estendere la MultiBundle e attuare le getBundles() metodo, in questo modo:

<?php 

namespace Acme\MyBundle; 

use AshleyDawson\MultiBundle\AbstractMultiBundle; 

class AcmeMyBundle extends AbstractMultiBundle 
{ 
    /** 
     * Optional: define a protected constructor to stop instantiation  outside of registerInto() 
     */ 
    protected function __construct() 
    { 

    } 

    /** 
    * Define bundles that this bundle depends on 
    */ 
    protected static function getBundles() 
    { 
     return array(
      new Acme\FooBundle\AcmeFooBundle(), 
      new Acme\BarBundle\AcmeBarBundle(), 
     ); 
    } 
} 

E poi in AppKernel registrare il fascio ed è dipendenze:

// app/AppKernel.php 

// ... 

class AppKernel extends Kernel 
{ 
    // ... 

    public function registerBundles() 
    { 
     $bundles = array(
      // ..., 
     ); 

     // Register my bundle and its dependencies 
     \Acme\MyBundle\AcmeMyBundle::registerInto($bundles); 

     // ... 
    } 
} 
Problemi correlati