In welchem Fall müssen wir diesen Befehl ausführen magento setup:di:compile
?
pub/static
In welchem Fall müssen wir diesen Befehl ausführen magento setup:di:compile
?
pub/static
Antworten:
Während der Bereitstellung (dh wenn Änderungen an einem System im Produktionsmodus vorgenommen wurden)
Beachten Sie, dass Sie im Produktionsmodus (Versionen 2.0.5 und früher) die "Multi-Tenant" -Kompilierung verwenden müssen. Behoben in 2.0.6 und höher.
bin/magento setup:di:compile-multi-tenant
Siehe: http://devdocs.magento.com/guides/v2.0/config-guide/cli/config-cli-subcommands-compiler.html
Sie können die Kompilierung auch im Entwicklungsmodus verwenden, was die Site beschleunigen sollte, andererseits aber die Entwicklung verlangsamt, da Sie bin/magento setup:di:compile
jedes Mal ausgeführt werden müssen, wenn Sie neue Klassen mit Abhängigkeiten (Konstruktorparameter) oder geänderte Abhängigkeiten vorhandener Klassen hinzufügen .
Dies ist optional und wahrscheinlich keine gute Idee. Wenn Sie die Kompilierung bereits in Ihrer Entwicklungsumgebung ausgeführt haben, löschen Sie die Dateien in var/di
, um sie zu deaktivieren.
var/generation
?
Action
zum testen erstellt. - Seite geladen, Fehler. - Gelöscht di
und generation
Ordner, neu geladen, funktioniert. - Neue Abhängigkeit hinzufügen, Seite neu laden, Fehler. Es wird jedoch kein di
Ordner generiert. - generation
Erneut löschen , neu laden, funktioniert. Fazit: Löschen Sie den Generierungsordner, nachdem Sie Abhängigkeiten hinzugefügt haben, und Sie müssen ihn nicht ausführen setup:di:compile
. Wenn jemand anderes dies bestätigen könnte, wäre das großartig.
Nach meinem Kommentar zu einer anderen Antwort:
Sie können verhindern, dass der setup:di:compile
Befehl nach jedem Hinzufügen einer Abhängigkeit ausgeführt wird, indem Sie einfach die Ordner var/di
und löschen, bevor Sie die Seite neu laden .var/generation
Nach meinen eigenen Tests erstellt Magento den var/generation
Ordner neu, aber nicht den var/di
Ordner, bis er setup:di:compile
erneut ausgeführt wird. Das heißt, Sie sollten nur den var/generation
Ordner zum Löschen haben.
Witzigerweise funktioniert dies auch mit pub/static/*
und setup:static-content:deploy
. Dies liegt daran, dass Magento anscheinend Symlinks zu den Dateien erstellt, die benötigt werden, wenn der statische Inhalt durch erneutes Laden der Seite erstellt wird, und nicht durch CLI.
Die Mitarbeiter in unserem Büro hatten Probleme, die oben genannten Befehle auszuführen, während sie Docker für Mac verwendeten. Die Dateiverarbeitung war einfach zu langsam. Mit den obigen Schritten sollte die Entwicklung viel schneller sein.
Es ist wahrscheinlich am besten zu beachten, dass dies im Produktions- oder Standardmodus nicht funktioniert. Dies ist nur für die Entwicklung. Wie von Fabian Schmengler erwähnt, ist das Neuladen der ersten Seite langsamer als normal, sollte aber nicht so langsam sein wie das Ausführen setup:static-content:deploy
oder `setup: di: compile.
Als Referenz führe ich Version 2.1.5 aus .
Entnommen aus Alan Storms Blog .
Abhängigkeitsinjektionskompilierung
Zunächst sollten wir das Problem erläutern, das diese Befehle zu lösen versuchen. Wenn Sie ein Magento 2-System an die Produktion senden, müssen Sie den folgenden Befehl ausführen
php bin/magento setup:di:compile
Dieser Befehl durchsucht den Code in Ihrem System und generiert eine Reihe von Dingen (hauptsächlich im Zusammenhang mit dem Objektmanagersystem und der Abhängigkeitsinjektion), die Magento dynamisch lädt, wenn Sie im Entwicklermodus ausführen. Dies ist sowohl eine Leistungs- als auch eine Sicherheitssache, und es würde den Rahmen dieses Artikels sprengen, dies vollständig zu diskutieren.