2012-12-30 21 views
6

Używam maven w JAVA i zacząłem używać PHP Maven, niedawno przełączyłem się na kompozytora.Lepsze podejście do pobierania zależności od php composer

Mój projekt jest zgodny z Zend Framework 2, a zespół sprawdza tylko w kodzie aplikacji, a nie w katalogu dostawcy. Robi się tak, aby uniknąć konfliktów i nie mieć bibliotek pod SVN.

Za każdym razem, gdy programista ustawia swoje nowe środowisko, zauważamy, że kompozytor pobiera zależności z Internetu. To zajmuje dość dużo czasu.

Czy istnieje lepszy pomysł/podejście, aby przyspieszyć ten proces lub w inny sposób obsługiwać projekt, aby uniknąć tego problemu?

maven używa maven proxy servers, które mogą buforować pobieranie i może być ponownie użyty w sieci, ale czy mamy jakieś rozwiązania, aby poradzić sobie z takimi problemami?

Odpowiedz

1

W PHP nie jest istniejącym rozwiązaniem dla prowadzenia kompozytora jak repo lokalnie i to się nazywa Satis (jest faktycznie świadczona przez kompozytora) tutaj: https://github.com/composer/satis

Więc można go uruchomić lokalnie na serwerze i wskaż kompozytorowi użyj tego jako domyślnego repozytorium kompozytora, a Satis upewnia się, że wszystkie zainstalowane pakiety i różne wersje są buforowane na dysku jako pliki ZIP, więc można je pobrać szybciej niż zawsze pobierając je z Internetu.

można zrobić coś takiego:

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

ta pozwala również posiadają prywatne pakiety i biblioteki, nie narażając ich na GitHub.

Kolejną dużą zaletą jest to, że GitHub przestaje działać z dowolnego powodu, który nadal możesz wdrożyć, ponieważ wszystkie twoje zaległości są buforowane lokalnie. Zakłada to, że nie dodałeś nowych, nieistniejących pakietów do wydania.

+0

To dokładnie rozwiązuje problem. – sujaisd

2

Composer to bardzo młody projekt, więc może być brak rzeczy, które np. Maven może współpracować bez problemów.

Można ustawić własny serwer Packagist zgodnie z opisem w composer docs. Wierzę, że packagist ma pewne opcje buforowania, które mogą być używane do przechowywania pakietów na serwerze packagist.

Możliwe jest również rozwidlenie zależności i przeniesienie ich do prywatnego repozytorium należącego do firmy. W twoim composer.json używałbyś teraz tylko tych zależności, dzięki czemu szybciej klonujesz. Oczywiście wymagałoby to zachowania wszystkich różnych zależności (chociaż można to zrobić za pomocą skryptu i cronjob, wyciągając dane z repozytorium github i przesyłając je do posiadanej firmy).

Wierzę również, że kompozytor ma pewne opcje proxy, ale nie sądzę, że mają one na celu buforowanie zależności.

Ostatnią opcją byłoby opracowanie czegoś takiego, jako części kompozytor/packagist lub jako samodzielny.

+0

Chciałbym spróbować z opcją packigst i proxy i poinformuje Cię o opinii. Dzięki za chwilkę. – sujaisd

Powiązane problemy