2012-08-01 9 views
16

Posiadamy własne repozytorium Satis, możemy tam przechowywać nasze własne zależności. To działa dobrze.Czy mogę synchronizować lub odzwierciedlać zależności od packagist.org z moją własną instalacją Satis Composer?

Ale jeśli programista używa pakietu, który nie znajduje się w naszym własnym repozytorium, wówczas Composer pobierze go z GitHub przez packagist.org (jako rezerwowy).

Ale nie chcemy być zależni od packagist.org. Wszystkie zależności należy pobrać z naszego własnego repozytorium.

Co chcemy wiedzieć, jeśli jest możliwe, że Satis pobrać pakiet z Packagist, jeśli nie jest jeszcze dostępny lokalnie, a następnie zapisać go i dodać automatycznie do własnego repozytorium Satis.

W ten sposób nie musimy ręcznie dodawać zależności do repozytorium Satis.

+0

Packagist zapisuje tylko metadane pakietu. Rzeczywisty kod źródłowy pochodzi z repozytorium (zazwyczaj gitHub). Domyślam się, że możesz przeglądać kod źródłowy kompozytu, aby dowiedzieć się, w jaki sposób wyświetlają pakiety i pobierają metadane. – Tivie

Odpowiedz

15

Satis obsługuje to teraz.

Wystarczy postępować zgodnie z Satis setup instructions i dodać następujące informacje do pliku konfiguracyjnego (domyślnie o nazwie satis.json). Zaktualizuj prefiks-url i wymagaj w razie potrzeby.

{ 
    "repositories": [ 
     { "type": "composer", "url": "https://packagist.org" } 
    ], 
    "require-dependencies": true, 
    "require": { 
     {{your application dependencies from composer.json}} 
    }, 
    "archive": { 
     "directory": "dist", 
     "prefix-url": "{{your server}}", 
     "skip-dev": true 
    } 
} 

Następnie można utworzyć repozytorium Satis jak normalny:

php bin/satis build <configuration file> <build dir> 

Teraz repozytorium Satis zadowoli wszystkich zależnościach swojej aplikacji.


Uwaga: pierwsze uruchomienie może zająć trochę czasu. Kolejne przebiegi są znacznie szybsze. Zwróć też uwagę, że Satis używa/tmp dla swojej pamięci podręcznej. W małym systemie pamięci, w którym/tmp jest wspierany przez tmpfs, konieczne może być zwiększenie przestrzeni/tmp, jeśli masz duże drzewo zależności.

Możesz również chcieć disable the Packagist repository w pliku composer.json twojego projektu, aby wymusić, że wszystkie zależności pochodzą z twojego repozytorium Satis. Aby to zrobić, dodaj:

{ 
    "repositories": [ 
     { 
      "packagist": false 
     } 
    ] 
} 

do kompozytor.json twojego projektu.

+0

Dzięki za komentarz! Czy ta konfiguracja nadal nie uzależniałaby twojej instancji Satis od Packagist, gdy przechodzi do archiwizacji wszystkich zależności (np. 'Php bin/satis build')? Więc jeśli Packagist.org nie działa, gdy uruchomisz 'php bin/satis build', to nie wie, gdzie każda zależność żyje. Oczywiście oznacza to ręczne utrzymywanie listy wszystkich kanonicznych adresów URL repozytoriów w 'repozytoriach ', ale jest to cena za niezależność. Czy może czegoś brakuje? –

+0

Masz rację, ale to nie jest wielka sprawa, ponieważ jeśli Packagist nie działa, wciąż masz wszystkie zależności, które rozłożyłeś podczas ostatniego biegu Satis.W praktyce myślę, że napotkasz (i naprawisz) wszelkie problemy zewnętrzne (takie jak niedostępne Packagist), gdy aktywnie zmieniasz zależności i używasz w pełni usatysfakcjonowanego lustra zależności podczas normalnego rozwoju i produkcji. – rynemccall

+0

Problem polega na tym, że wciąż trzeba ręcznie dodać wszystkie zależności. Jeśli masz repozytorium git, możesz to po prostu dodać, ale zależności wymagane przez projekt w tym repozytorium nie zostaną automatycznie załadowane, jest to duży ręczny wysiłek. – Lars

6

Możesz użyć broker, aby osiągnąć to na razie. Najprawdopodobniej ta zdolność zostanie dodana do samego satis.

+0

dziękuję, to wygląda dokładnie to, czego potrzebuję. – Niborb

+2

"Uwaga: ten projekt nie jest już aktywnie utrzymywany. Ponieważ [satis] (https://github.com/composer/satis) obsługuje podobną funkcjonalność teraz, powinieneś użyć [satis] (https://github.com/ composer/satis). " – MPV

Powiązane problemy