2012-12-30 31 views
6

Ho usato Maven in JAVA e ho iniziato a utilizzare PHP Maven, recentemente sono passato al compositore.Un approccio migliore per scaricare le dipendenze di php composer

Il mio progetto è con Zend Framework 2 e il team controlla solo nel codice dell'applicazione non nella directory del venditore. Questo è fatto per evitare conflitti e non avere le librerie sotto SVN.

Ora ogni volta che uno sviluppatore imposta il suo nuovo ambiente, osserviamo che il compositore estrae le dipendenze da Internet. Questo richiede molto tempo.

Esiste un'idea o un approccio migliore per velocizzare o gestire il progetto in modo diverso per evitare questo problema?

maven utilizza server proxy Maven che possono memorizzare nella cache il download e possono essere riutilizzati nella rete, ma abbiamo soluzioni per gestire problemi come questo?

risposta

1

In PHP c'è un'opzione esistente per l'esecuzione di un compositore come pronti contro termine a livello locale e si chiama Satis (in realtà è fornita dal compositore) qui: https://github.com/composer/satis

modo da poter eseguire localmente sul server e puntare il compositore utilizzalo come repository di compositore predefinito e Satis si assicura che tutti i pacchetti installati e le diverse versioni siano memorizzati nella cache su disco in quanto i file ZIP potrebbero essere recuperati più rapidamente rispetto al download da Internet.

si può fare qualcosa di simile:

{ 
    "repositories": [ 
     { 
      "type": "composer", 
      "url": "http://satis.example.org/" 
     } 
    ], 
    "require": { 
     "company/package": "1.2.0", 
     "company/package2": "1.5.2", 
     "company/package3": "dev-master" 
    } 
} 

Questo permette anche di avere pacchetti private e biblioteche senza esporli su GitHub.

Un altro GRANDE vantaggio è quando GitHub si interrompe per qualsiasi ragione sia ancora possibile distribuire poiché tutte le dipendenze sono memorizzate nella cache localmente. Questo presuppone che tu non abbia aggiunto nuovi pacchetti inesistenti alla versione.

+0

Questo risolve esattamente il problema. – sujaisd

2

Composer è un progetto molto giovane, quindi potrebbero esserci cose che mancano, ad es. Maven può collaborare senza problemi.

È possibile configurare il proprio server Packagist come descritto nello composer docs. Credo che packagist abbia alcune opzioni di memorizzazione nella cache che possono essere utilizzate per memorizzare i pacchetti sul server packagist.

Ciò che si potrebbe fare è forgiare le dipendenze e trasferirle in un repository privato di proprietà dell'azienda. Nel tuo compositore.json ora useresti solo queste dipendenze, rendendo più veloce la clonazione. Ovviamente ciò richiederebbe il mantenimento di tutte le diverse dipendenze (sebbene ciò potrebbe essere fatto con uno script e un cronjob, estraendo i dati dal repository github e inserendolo nella proprietà dell'azienda).

Credo anche che il compositore abbia alcune opzioni proxy, ma non penso che queste siano pensate per mettere in cache le dipendenze.

L'ultima opzione sarebbe quella di sviluppare qualcosa di simile, sia come parte di compositore/packagist o come autonomo.

+0

Vorrei provare con l'opzione packigst e proxy e ti farò sapere il feedback. Grazie per ora. – sujaisd

Problemi correlati