Besteci güncellemesi ve besteci yüklemesi arasındaki farklar nelerdir?


Yanıtlar:


297

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:

  • Okuma composer.json
  • Artık gerekli olmayan yüklü paketleri kaldırın composer.json
  • Gerekli paketlerinizin en son sürümlerinin kullanılabilirliğini kontrol edin
  • Paketlerinizin en son sürümlerini yükleyin
  • composer.lockYüklü paketler sürümünü depolamak için güncelleme

besteci 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ı oku
  • composer.lockDosyada belirtilen paketleri yükleyin

Ne 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.


5
Kilit dosyamız yoksa ve besteci yüklemesini çağırırsak ne olacağını anlatmadınız. Güzel açıklama btw.
user1954544

1
Bir gün seni ısırabilecek önemli şey - kilit dosyası özyinelemeli değil. Bazı paketler gevşek bir şekilde tanımlanmış bağımlılıklar içeriyorsa ve temiz bir makinede bir projenin temiz bir kopyasını alırsanız, yeni hatalar ve hatta değişiklikleri kırabilecek farklı iç içe bağımlılık sürümleri yükleyebilir! Özellikle sürekli entegrasyon ve derleme sunucuları için geçerlidir. Çözüm - iç içe sorunlu paketi avlayın ve sabit iyi sürümünü json ve kilit dosyasına ekleyin.
JustAMartin

composer global updatesistemdeki küresel veri havuzunuzdaki bağımlılıkları ve güncellemeleri ( COMPOSER_HOMEenv değişkeni)
Yousha Aleayoub

1
Ardından, bir üretim sunucusundaki belirli bir paketi nasıl güvenle güncelleyebilirim?
Michel

@Michel Önce 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
Amin Shojaei

58

Ç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).


23

composer install

  1. Varsa composer.lock.
    • Bağımlılıkları composer.lockdosyadan işler ve yükler .
  2. Eğer composer.lockyok değil var.
    • Paketi yükleme işlemini gerçekleştirin 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ı arar composer.jsonve aynısını yapar.


composer update

  1. composer.jsonDosyadaki bağımlılıkları işler (yükler, günceller ve kaldırır).
  2. 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


besteci yükleme noktası 3 anlamlı değildir. Eğer .lock dosyası zaten varsa, onu okuyacak ve asla "güncellemeyecektir". Sadece henüz mevcut değilse oluşturulur ..
Ben

@Ben noktaları netleştirdim, şimdi mantıklı olup olmadıklarını bana bildirin.
kenorb

3

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

  • Aksi takdirde hangi bağımlılıkların yüklenmesi gerektiğini öğrenmek için composer.json dosyasını okuyun
  • Composer.lock dosyasını proje bilgileriyle birlikte yazın (yüklü bağımlılıklar)

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.lock dosyası yok sayılır
  • composer.json dosya bağımlılıkları yüklenecek ve güncellenecektir (bağımlılık yüklenmemişse indirilecektir)

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

  • composer.json dosyası otomatik olarak değiştirilecek ve yeni bağımlılık eklenecek
  • bağımlılık projeye indirilecek

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

  • Dal tüm bağımlılıklarıyla kaldırılacak

1

besteci yüklemek

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
}

besteci güncellemesi

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

  • Bugün mevcut bağımlılık sürümü ile iyi çalışıyoruz (örneğin: 1.0.0) ancak birkaç ay sonra bağımlılık güncellemesi (örn: 1.0.1) ve bazı hatalar var
  • Başka bir ekip üyesi, 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.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.