Jakie są różnice między composer update
i composer install
?
źródło
aktualizacja kompozytora
composer update
zaktualizuje twoje zależności, tak jak są one określone w composer.json
Na przykład, jeśli potrzebujesz tego pakietu jako zależności:
"mockery/mockery": "0.9.*",
i faktycznie zainstalowałeś 0.9.1
wersję pakietu, uruchomienie composer update
spowoduje aktualizację tego pakietu (na przykład do0.9.2
, jeśli został już wydany)
szczegółowo composer update
:
composer.json
composer.json
composer.lock
aby przechowywać wersję zainstalowanych pakietówinstalacja kompozytora
composer install
niczego nie zaktualizuje; po prostu zainstaluje wszystkie zależności określone w composer.lock
pliku
Szczegółowo:
composer.lock
plik istnieje (jeśli nie, uruchom go composer-update
i utwórz)composer.lock
plikcomposer.lock
plikuKiedy instalować i kiedy aktualizować
composer update
jest najczęściej używany w `` fazie rozwoju '', aby zaktualizować nasze pakiety projektów zgodnie z tym, co określono w composer.json
pliku,
composer install
jest używany głównie w „fazie wdrażania” do zainstalowania naszej aplikacji na serwerze produkcyjnym lub w środowisku testowym, przy użyciu tych samych zależności, które są zapisane w pliku composer.lock utworzonym przez aktualizację kompozytora.
composer global update
aktualizuje zależności w twoim globalnym repozytorium w systemie lokalnym (COMPOSER_HOME
zmienna env)composer update
w systemie lokalnym i przetestować aplikację, a następnie załadować plik composer.lock na serwerze produkcyjnym i uruchomićcomposer install
Po uruchomieniu
composer install
szuka pliku blokującego i instaluje wszystko, co jest w nim zawarte, jeśli nie może go znaleźć, odczytacomposer.json
, zainstaluje zależności i wygeneruje plik blokujący.Po uruchomieniu
composer update
po prostu czytacomposer.json
, instaluje zależności i aktualizuje plik blokujący (lub tworzy nowy plik blokujący).źródło
composer install
composer.lock
istnieje.composer.lock
pliku.composer.lock
nie nie istnieje.composer.json
.composer.lock
plik na podstawie zainstalowanych pakietów.Jak na
composer help install
::composer update
composer.json
pliku (instaluje, aktualizuje i usuwa).composer.lock
plik zgodnie ze zmianami.Jak na
composer help update
::Zobacz też: Kompozytor: chodzi o plik blokady
źródło
Najlepsza różnica między
composer update
acomposer install
instalacja kompozytora
Aby dodać zależności, musisz dodać je ręcznie do pliku composer.json.
Jeśli istnieje plik composer.lock, zainstaluj dokładnie to, co jest określone w tym pliku
Żaden komponent nie zostanie zaktualizowany za pomocą tego polecenia.
aktualizacja kompozytora
Aby dodać lub usunąć zależności, musisz dodać je ręcznie do pliku composer.json
Jeśli nie możesz (lub nie wiesz, jak dodać lub usunąć bibliotekę, co jest w rzeczywistości łatwe, po prostu dodaj nazwę zależności i wersję we właściwości require pliku) zmodyfikuj plik composer.json ręcznie lub wolę zamiast tego używać wiersza poleceń, kompozytor ma do tego specjalne funkcje:
kompozytor wymaga
Na przykład, jeśli chcemy dodać zależność z linią poleceń, po prostu wykonamy
composer require twig/twig
kompozytor usunąć
Jeśli chcesz usunąć nieużywaną zależność, wykonamy po prostu:
composer remove twig/twig --update-with-dependencies
źródło
instalacja kompozytora
aktualizacja kompozytora
Dlaczego potrzebujemy 2 poleceń. Myślę, że można to wyjaśnić przez composer.lock.
Wyobraź sobie, że NIE mamy
composer.lock
icomposer.json
jest zależność"monolog/monolog": "1.0.*"
lub"monolog/monolog": "^1.0"
.Wtedy będzie miał kilka przypadków
composer install
w innym czasie.A co, jeśli zawsze używamy wersji EXACT w
composer.json
np."monolog/monolog": "1.0.1"
?Nadal potrzebujemy,
composer.lock
ponieważcomposer.json
śledzimy tylko główną wersję twojej zależności, nie może śledzić wersji zależności zależności.A co, jeśli wszystkie zależności zależności również używają wersji EXACT?
Wyobraź sobie, że zaczynasz od WSZYSTKICH zależności, które używają wersji DOKŁADNEJ, więc nie dbasz o to
composer.lock
. Jednak kilka miesięcy później dodajesz nową zależność (lub aktualizujesz starą zależność), a zależności tej zależności nie używają wersji EXACT. Wtedy lepiejcomposer.lock
na początku uważać .Poza tym istnieje przewaga wersji semantycznej nad dokładną wersją. Możemy aktualizować zależność wiele razy podczas programowania, a biblioteka często zawiera drobne zmiany, takie jak naprawa błędów. Wtedy łatwiej jest zaktualizować zależność, która używa wersji semantycznej.
źródło