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/di
devre dışı bırakmak için içindeki dosyaları silin .
var/generation
?
Action
Test etmek için yeni bir tane oluşturduk . - Sayfa yüklendi, hata. - Silindi di
ve generation
klasörler, yeniden yüklendi, çalışıyor. - Yeni bağımlılık ekleyin, sayfayı yeniden yükleyin, hata. Ancak di
klasör oluşturulmaz. - generation
Tekrar 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:compile
Her bağımlılık ekledikten sonra , sayfayı yeniden yüklemeden öncevar/di
ve var/generation
klasörlerini silerek komutu çalıştırmaktan kaçınabilirsiniz .
Kendi testlerimden, Magento var/generation
klasörü yeniden oluşturur , ancak tekrar çalıştırılıncaya var/di
kadar klasörü setup:di:compile
yeniden oluşturmaz. Bu, yalnızca var/generation
silinecek 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:deploy
veya `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.