Hangi durumda bu komutu çalıştırmamız gerekiyor magento setup:di:compile?
pub/static
Hangi durumda bu komutu çalıştırmamız gerekiyor magento setup:di:compile?
pub/static
Yanıtlar:
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 .
var/generation?
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.
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 .
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.