2012-12-30 4 views
6

Ich habe Maven in JAVA verwendet und begann mit PHP Maven, vor kurzem wechselte ich zum Komponisten.Besserer Ansatz zum Herunterladen von PHP-Composer-Abhängigkeiten

Mein Projekt ist mit Zend Framework 2 und das Team überprüft nur den Anwendungscode nichts im Lieferantenverzeichnis. Dies geschieht, um Konflikte zu vermeiden und die Bibliotheken nicht unter SVN zu haben.

Jedes Mal, wenn ein Entwickler seine neue Umgebung einstellt, beobachten wir, dass der Komponist die Abhängigkeiten aus dem Internet zieht. Das dauert ziemlich lange.

Gibt es eine bessere Idee/einen besseren Ansatz, um dies zu beschleunigen oder das Projekt anders zu behandeln, um dieses Problem zu vermeiden?

maven verwendet maven Proxyserver, die den Download zwischenspeichern können und wieder im Netzwerk verwendet werden können, aber haben wir irgendwelche Lösungen, um solche Probleme zu lösen?

Antwort

1

In PHP gibt es eine bestehende Option für einen Komponisten wie Repo lokal ausgeführt wird und es heißt Satis (es nach Komponist tatsächlich zur Verfügung gestellt wird) hier: https://github.com/composer/satis

So können Sie es lokal auf dem Server ausgeführt und zeigen Sie mit Komponisten Verwenden Sie das als Standard-Composer-Repository, und Satis stellt sicher, dass alle installierten Pakete und verschiedenen Versionen als ZIP-Dateien auf der Festplatte zwischengespeichert werden, sodass sie schneller abgerufen werden können, als wenn sie immer aus dem Internet heruntergeladen werden.

Sie können etwas tun:

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

Dies auch Sie private Pakete und Bibliotheken haben können, ohne sie auf GitHub auszusetzen.

Ein weiterer großer Vorteil ist, wenn GitHub aus irgendeinem Grund ausfällt, den Sie noch bereitstellen können, da alle Ihre Abhängigkeiten lokal zwischengespeichert werden. Dies setzt voraus, dass Sie dem Release keine neuen, nicht vorhandenen Pakete hinzugefügt haben.

+0

Das löst genau das Problem. – sujaisd

2

Komponist ist ein sehr junges Projekt, also könnte es Dinge fehlen, die z. Maven kann problemlos mitmachen.

Sie können Ihren eigenen Packagist-Server wie in der composer docs beschrieben einrichten. Ich glaube, packagist hat einige Cache-Optionen, die zum Speichern von Paketen auf dem Packagist-Server verwendet werden können.

Was Sie auch tun könnten, ist Gabelung Ihrer Abhängigkeiten und schieben Sie sie zu einem unternehmenseigenen privaten Repository. In Ihrer composer.json würden Sie jetzt nur noch diese Abhängigkeiten verwenden, um das Klonen schneller zu machen. Das würde natürlich erfordern, dass Sie alle Abhängigkeiten beibehalten (obwohl dies mit einem Skript und einem Cronjob erledigt werden könnte, indem Sie die Daten aus dem Github-Repo ziehen und in Ihr Unternehmen übernehmen).

Ich glaube auch, Composer hat einige Proxy-Optionen, aber ich denke nicht, dass diese Abhängigkeiten zwischenspeichern sollen.

Die letzte Option wäre, so etwas zu entwickeln, entweder als Teil eines Composer/Packagist oder als Stand-Alone.

+0

Ich würde versuchen, mit der Packigst und Proxy-Option und wird Ihnen das Feedback wissen. Danke für jetzt. – sujaisd

Verwandte Themen