Arasındaki farklar nelerdir composer updateve composer install?
Arasındaki farklar nelerdir composer updateve 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.1paketin sürümünü yüklediyseniz , çalıştırmak composer updatebu paketin yükseltilmesine neden olur (örneğin 0.9.2, zaten yayınlanmışsa)
detaylı olarak composer update:
composer.jsoncomposer.jsoncomposer.lockYüklü paketler sürümünü depolamak için güncellemebesteci yüklemek
composer installhiçbir şey güncellenmez; composer.lockdosyada belirtilen tüm bağımlılıkları yükleyecek
Detayda:
composer.lockDosyanın var olup olmadığını kontrol edin (yoksa, çalıştırın composer-updateve oluşturun)composer.lockDosyayı okucomposer.lockDosyada belirtilen paketleri yükleyinNe zaman yüklenmeli ve ne zaman güncellenmeli
composer updateçoğunlukla 'geliştirme aşamasında', proje paketlerimizi composer.jsondosyada 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 updatesistemdeki küresel veri havuzunuzdaki bağımlılıkları ve güncellemeleri ( COMPOSER_HOMEenv değişkeni)
composer updateyerel 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 installbir 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 updateokur composer.json, yükler ve kilit dosyasını günceller (veya yeni bir kilit dosyası oluşturur).
composer installcomposer.lock.
composer.lockdosyadan işler ve yükler .composer.lockyok değil var.
composer.json.composer.lockYüklü paketleri temel alarak dosyayı oluşturur .Başı composer help install::
İnstall komutu
composer.lockdosyayı 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.jsonve aynısını yapar.
composer updatecomposer.jsonDosyadaki bağımlılıkları işler (yükler, günceller ve kaldırır).composer.lockDosyayı değişikliklere göre oluşturur veya günceller .Başı composer help update::
Update komutu
composer.jsondosyayı 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 updatevecomposer 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.lockve içinde composer.jsonbir bağımlılık vardır "monolog/monolog": "1.0.*"ya "monolog/monolog": "^1.0".
Sonra, bazı vakaları olacak
composer installfarklı bir zamanda çalışırsa farklı bir bağımlılık sürümüne sahip olabilir .Ya her zaman composer.jsongibi bir EXACT sürümü kullanırsak "monolog/monolog": "1.0.1"?
Yine de ihtiyacımız var composer.lockçünkü composer.jsonsadece 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.lockbaş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.