magento 2 - Hangi durumda bu komutu çalıştırmamız gerekir magento setup: di: compile?


12

Hangi durumda bu komutu çalıştırmamız gerekiyor magento setup:di:compile?


Yeni modüller yükledikten ve bazı direktörleri temizlemek istediğinizde
Jaleel

ve başka bir şey?
MrTo-Kane

Ayrıca üretim moduna geçtiğinizde, bu modda statik içerik üretilmez; her şey servis edilirpub/static
Steve Johnson

Yanıtlar:


8
  • Dağıtım sırasında (yani üretim modunda bir sistemde değişiklik yapıldığında)

    Üretim modunda (sürüm 2.0.5 ve öncesi) "çok kiracılı" derlemeyi kullanmanız gerektiğini unutmayın. 2.0.6 ve sonraki sürümlerde düzeltildi.

    bin/magento setup:di:compile-multi-tenant

    Bkz. Http://devdocs.magento.com/guides/v2.0/config-guide/cli/config-cli-subcommands-compiler.html

  • Derlemeyi, siteyi hızlandırması gereken geliştirme modunda da kullanabilirsiniz, ancak diğer yandan, geliştirmeyi yavaşlatır, çünkü bağımlılıklar (yapıcı parametreleri) veya mevcut sınıfların değişen bağımlılıkları ilebin/magento setup:di:compile her yeni sınıf eklediğinizde çalıştırmanız gerekecektir .

    Bu isteğe bağlıdır ve muhtemelen iyi bir fikir değildir. Derlemeyi geliştirme ortamınızda zaten çalıştırdıysanız, var/didevre dışı bırakmak için içindeki dosyaları silin .


1
kurulum: di: derleme-çok kiracı kaldırıldı
Antonino Bonumore

Var / di klasör numarasının silinmesinin işe yarayıp yaramadığına dair bir onay alabilir miyiz? Bana öyle gelmiyor
Wildcard27

@ Wildcard27 dizinleri de silerseniz ne olur var/generation?
Fabian Schmengler

@FabianSchmengler ActionTest etmek için yeni bir tane oluşturduk . - Sayfa yüklendi, hata. - Silindi dive generationklasörler, yeniden yüklendi, çalışıyor. - Yeni bağımlılık ekleyin, sayfayı yeniden yükleyin, hata. Ancak diklasör oluşturulmaz. - generationTekrar sil , yeniden yükle, çalışıyor. Sonuç: Bağımlılıklar ekledikten sonra oluşturma klasörünü silin; çalıştırmanız gerekmez setup:di:compile. Başka biri bunu onaylayabilseydi, bu harika olurdu.
Wildcard27

1

Başka bir cevap hakkındaki yorumuma göre:

setup:di:compileHer bağımlılık ekledikten sonra , sayfayı yeniden yüklemeden öncevar/di ve var/generationklasörlerini silerek komutu çalıştırmaktan kaçınabilirsiniz .

Kendi testlerimden, Magento var/generationklasörü yeniden oluşturur , ancak tekrar çalıştırılıncaya var/dikadar klasörü setup:di:compileyeniden oluşturmaz. Bu, yalnızca var/generationsilinecek klasöre sahip olmanız gerektiği anlamına gelir .

Funnily, bu pub/static/*ve ile de çalışır setup:static-content:deploy. Bunun nedeni, Magento'nun statik içerik CLI yerine sayfa yeniden yükleme ile oluşturulmuşsa, gerekli dosyalara sembolik bağlantılar oluşturduğu görülmektedir.

Ofisimizdeki kişiler, Mac için Docker'ı kullanırken yukarıdaki komutları çalıştırırken sorun yaşıyordu. Dosya işleme çok yavaştı. Yukarıdaki adımları kullanarak, geliştirme çok daha hızlı olmalıdır.

Muhtemelen bunun üretim veya varsayılan modda çalışmadığını unutmayın. Bu sadece geliştirme amaçlıdır. Fabian Schmengler tarafından belirtildiği gibi, ilk sayfa yeniden yüklemesi normalden daha yavaş olacaktır, ancak çalışan setup:static-content:deployveya `setup: di: compile kadar yavaş olmamalıdır .

Başvuru için, 2.1.5 sürümünü çalıştırıyorum .


0

Alındığı Alan Fırtına blogunda .

Bağımlılık Enjeksiyonu Derleme

Başlamak için, bu komutların çözmeye çalıştığı sorunu açıklamalıyız. Magento 2 sistemini üretime gönderirken, aşağıdaki komutu çalıştırmanız gerekir

php bin/magento setup:di:compile

Bu komut sisteminizdeki kodu tarar ve geliştirici modunda çalışırken Magento'nun dinamik olarak yüklediği birkaç şeyi (çoğunlukla nesne yöneticisi sistemi ve bağımlılık enjeksiyonuyla ilgili) önceden oluşturur. Bu hem bir performans hem de güvenlik olayıdır ve tam olarak tartışmak bu makalenin kapsamı dışındadır.


1
"Bu hem bir performans hem de güvenlik şeyidir ve tam olarak tartışmak bu makalenin kapsamı dışındadır." bu verdi. Alan Storm'dan açık bir kopya: alanstorm.com/magento_2_di_compile_pre-scan_with_commerce_bug
Fabian Schmengler
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.