2013-04-24 15 views
9

Kiedy biegnęSkąd pochodzą pakiety PHP Composer?

$ composer.phar install 

skąd te pakiety, które zostaną zainstalowane pochodzi?

Rozumiem, że Packagist jest domyślnym repozytorium dla pakietów PHP, i że brakuje mu innego pakietu w composer.json, to tutaj kompozytor będzie szukał pakietów.

Jednak nie jestem pewien, w jaki sposób współdziałają Composer i Packagist.

  • Czy pliki Kompozytor pobierać bezpośrednio z packagist.org

  • Albo nie Kompozytor uzyskać git/svn/Hg odnośnik repozytorium z packagist i pobrać pliki z repozytorium bezpośrednio?

  • Albo coś jeszcze?

+3

Packagist przechowuje łącza do repozytoriów i tam są one pobierane od –

Odpowiedz

10

To zależy od zawartości pliku composer.json.

Na przykład, jeśli composer.json zawarte prostu

{ 
    "require": { 
     "phpunit/phpunit": "3.8.*@dev" 
    } 
} 

następnie wyszukiwania kompozytor packagist i znajduje phpunit tutaj:

https://packagist.org/packages/phpunit/phpunit

który mówi kompozytor załadować PHPUnit stąd:

https://github.com/sebastianbergmann/phpunit.git

Jeśli zamiast Twój composer.json zawarte

{ 
    "repositories": [ 
     { 
      "type": "vcs", 
      "url": "http://github.com/sebastianbergmann/phpunit" 
     } 
    ], 
    "require": { 
     "phpunit/phpunit": "3.8.*@dev" 
    } 
} 

następnie kompozytor nie będzie wyglądać na packagist, ale przejść bezpośrednio do github, aby pobrać repo.

Pakiety zarejestrowanych na Packagist są zwykle W „autorytatywne” wersja pakietu (nie widelcem), ale znalazłem kilka przypadków, w których tego jest NIE sprawa, więc należy sprawdzić, aby mieć pewność wyciągasz pakiet, którego oczekujesz.

1

Packagist.org oferuje użytkownikom zarejestrowanie swojego oprogramowania poprzez wskazanie Packagist, aby przeczytał ich plik composer.json, który jest publikowany gdzieś w Internecie.

Powszechnie stosowanym przykładem są niektóre popularne hosty open source, takie jak github, co czyni je naprawdę łatwym, ponieważ kompozytor może od razu zająć się takim repozytorium git. Można jednak hostować własne repozytorium git lub svn lub hg, a nawet publikować gotowe pliki ZIP lub TGZ dla każdej wersji oprogramowania.

Kompozytor pobiera pliki bezpośrednio ze źródła, np. Packagist zna tylko te źródła i mówi instancji twojego kompozytora, dokąd się udać. Czyni to, pobierając kilka plików json z Packagist.org, które mają wszystkie informacje. Jest to znacznie łatwiejsze niż znalezienie miejsca, w którym znajdują się biblioteki, które są hostowane, i dodanie tych informacji jako wpisu repozytorium do lokalnego pliku composer.json. :)

Powiązane problemy