Arasındaki farklar nelerdir composer update
ve composer install
?
Arasındaki farklar nelerdir composer update
ve composer install
?
Yanıtlar:
besteci güncellemesi
composer update
bağımlılıklarınızı belirtildiği şekilde güncelleyecektir composer.json
Örneğin, bu paketi bağımlılık olarak istiyorsanız:
"mockery/mockery": "0.9.*",
ve aslında 0.9.1
paketin sürümünü yüklediyseniz , çalıştırmak composer update
bu paketin yükseltilmesine neden olur (örneğin 0.9.2
, zaten yayınlanmışsa)
detaylı olarak composer update
:
composer.json
composer.json
composer.lock
Yüklü paketler sürümünü depolamak için güncellemebesteci yüklemek
composer install
hiçbir şey güncellenmez; composer.lock
dosyada belirtilen tüm bağımlılıkları yükleyecek
Detayda:
composer.lock
Dosyanın var olup olmadığını kontrol edin (yoksa, çalıştırın composer-update
ve oluşturun)composer.lock
Dosyayı okucomposer.lock
Dosyada belirtilen paketleri yükleyinNe zaman yüklenmeli ve ne zaman güncellenmeli
composer update
çoğunlukla 'geliştirme aşamasında', proje paketlerimizi composer.json
dosyada belirttiklerimize göre yükseltmek için kullanılır ,
composer install
öncelikle uygulamamızı bir üretim sunucusuna veya bir test ortamına yüklemek için besteci güncellemesi tarafından oluşturulan composer.lock dosyasında saklanan aynı bağımlılıkları kullanarak 'dağıtım aşaması'nda kullanılır.
composer global update
sistemdeki küresel veri havuzunuzdaki bağımlılıkları ve güncellemeleri ( COMPOSER_HOME
env değişkeni)
composer update
yerel sisteminizde çalışmalı ve uygulamanızı test etmeli , daha sonra composer.lock dosyasını üretim sunucunuza yüklemeli ve çalıştırmalısınızcomposer install
Çalıştırdığınızda composer install
bir kilit dosyası arayacak ve içindeki her şeyi yükleyecektir, eğer bulamazsa, okuyacak composer.json
, bağımlılıklarını yükleyecek ve bir kilit dosyası oluşturacaktır.
Çalıştırdığınızda bağımlılıkları composer update
okur composer.json
, yükler ve kilit dosyasını günceller (veya yeni bir kilit dosyası oluşturur).
composer install
composer.lock
.
composer.lock
dosyadan işler ve yükler .composer.lock
yok değil var.
composer.json
.composer.lock
Yüklü paketleri temel alarak dosyayı oluşturur .Başı composer help install
::
İnstall komutu
composer.lock
dosyayı geçerli dizinden okur , işler ve bu dosyada belirtilen tüm kitaplıkları ve bağımlılıkları indirir ve yükler. Dosya yoksa, dosyayı ararcomposer.json
ve aynısını yapar.
composer update
composer.json
Dosyadaki bağımlılıkları işler (yükler, günceller ve kaldırır).composer.lock
Dosyayı değişikliklere göre oluşturur veya günceller .Başı composer help update
::
Update komutu
composer.json
dosyayı geçerli dizinden okur , işler ve tüm bağımlılıkları günceller, kaldırır veya yükler.
Ayrıca bakınız: Besteci: Her Şey Kilit Dosyası Hakkında
Arasında en iyi fark composer update
vecomposer install
besteci yüklemek
Bağımlılıklar eklemek için composer.json dosyasına el ile eklemeniz gerekir.
Composer.lock dosyası varsa, tam olarak bu dosyada belirtilenleri yükleyin
Bu komutla hiçbir bileşen güncellenmeyecektir.
besteci güncellemesi
Bağımlılık eklemek veya kaldırmak için composer.json dosyasına el ile eklemeniz gerekir
Composer.json dosyasını el ile değiştiremezseniz (veya aslında kolay olan bir kitaplığın nasıl ekleneceğini veya kaldırılacağını bilmiyorsanız, bağımlılık ve sürümün adını dosyaya ekleyin) bunun yerine komut satırını kullanmayı tercih edin, bestecinin bunun için özel işlevleri vardır:
besteci gerektirir
Örneğin, komut satırına bir bağımlılık eklemek istiyorsak,
composer require twig/twig
besteci kaldır
Kullanılmayan bir bağımlılığı kaldırmak istiyorsanız, basitçe yürütürüz:
composer remove twig/twig --update-with-dependencies
if(composer.lock existed){
installs dependency with EXACT version in composer.lock file
} else {
installs dependency with LATEST version in composer.json
generate the composer.lock file
}
composer update = remove composer.lock -> composer install
Neden 2 komuta ihtiyacımız var. Ben composer.lock tarafından açıklayabilir düşünüyorum.
Imagine biz YAPMAYIN var composer.lock
ve içinde composer.json
bir bağımlılık vardır "monolog/monolog": "1.0.*"
ya "monolog/monolog": "^1.0"
.
Sonra, bazı vakaları olacak
composer install
farklı bir zamanda çalışırsa farklı bir bağımlılık sürümüne sahip olabilir .Ya her zaman composer.json
gibi bir EXACT sürümü kullanırsak "monolog/monolog": "1.0.1"
?
Yine de ihtiyacımız var composer.lock
çünkü composer.json
sadece bağımlılığınızın ana sürümünü izliyor, bağımlılık bağımlılıklarının sürümünü izleyemiyor.
Tüm bağımlılık bağımlılıkları da EXACT sürümünü kullanıyorsa ne olur?
O zaman umurumda değil EXACT sürümünü kullanan TÜM bağımlılıklar ile başladığını düşünün composer.lock
. Ancak, birkaç ay sonra yeni bir bağımlılık eklersiniz (veya eski bağımlılığı güncelleştirirsiniz) ve bu bağımlılığın bağımlılıkları EXACT sürümünü kullanmaz. O zaman composer.lock
başlangıçta bakım yapmak daha iyidir .
Bunun yanı sıra, semantik bir versiyonun tam bir versiyona göre bir avantajı vardır. Geliştirme sırasında bağımlılığı birçok kez güncelleyebiliriz ve kütüphane genellikle hata düzeltmesi gibi bazı küçük değişikliklere sahiptir. Daha sonra semantik sürümü kullanan bağımlılığı yükseltmek daha kolaydır.