W jakim przypadku musimy uruchomić to polecenie magento setup:di:compile
?
magento2
extensions
cli
MrTo-Kane
źródło
źródło
pub/static
Odpowiedzi:
Podczas wdrażania (tj. Kiedy wprowadzono zmiany w systemie w trybie produkcyjnym)
Należy pamiętać, że w trybie produkcyjnym (wersje 2.0.5 i wcześniejsze) należy użyć kompilacji „wielu dzierżawców”. Naprawiono w wersji 2.0.6 i nowszych.
Zobacz: http://devdocs.magento.com/guides/v2.0/config-guide/cli/config-cli-subcommands-compiler.html
Możesz także użyć kompilacji w trybie programistycznym, co powinno przyspieszyć stronę, ale z drugiej strony spowalnia rozwój, ponieważ będziesz musiał uruchamiać
bin/magento setup:di:compile
za każdym razem, gdy dodajesz nowe klasy z zależnościami (parametry konstruktora) lub zmieniasz zależności istniejących klas .Jest to opcjonalne i prawdopodobnie nie jest to dobry pomysł. Jeśli kompilacja została już uruchomiona w środowisku programistycznym, usuń pliki,
var/di
aby ją wyłączyć.źródło
var/generation
?Action
test. - Załadowano stronę, błąd. - Usuniętedi
igeneration
foldery, ponownie załadowane, działa. - Dodaj nową zależność, przeładuj stronę, błąd. Jednak żadendi
folder nie jest generowany. - Usuńgeneration
ponownie, załaduj ponownie, działa. Wniosek: Usuń folder generowania po dodaniu zależności i nie będziesz musiał uruchamiaćsetup:di:compile
. Gdyby ktoś inny mógł to potwierdzić, byłoby świetnie.Zgodnie z moim komentarzem do innej odpowiedzi:
Można uniknąć uruchamiania
setup:di:compile
polecenia po każdym dodaniu zależności, po prostu usuwając folderyvar/di
i przed ponownym załadowaniem strony .var/generation
Z moich własnych testów Magento odtworzy
var/generation
folder, ale nievar/di
folder, dopóki niesetup:di:compile
zostanie ponownie uruchomiony. Oznacza to, że powinieneś mieć tylkovar/generation
folder do usunięcia.Co zabawne, działa to również z
pub/static/*
isetup:static-content:deploy
. Wynika to z faktu, że Magento wydaje się tworzyć dowiązania symboliczne do plików potrzebnych, jeśli zawartość statyczna jest budowana przez przeładowanie strony, a nie CLI.Ludzie w naszym biurze mieli problemy z uruchomieniem powyższych poleceń podczas korzystania z Docker na Maca. Przetwarzanie pliku było po prostu zbyt wolne. Wykonując powyższe kroki, programowanie powinno być znacznie szybsze.
Prawdopodobnie najlepiej zauważyć, że nie zadziała to w trybie produkcyjnym lub domyślnym. To jest tylko dla rozwoju. Jak wspomniał Fabian Schmengler, początkowe ładowanie strony będzie wolniejsze niż normalnie, ale nie powinno być tak wolne jak uruchamianie
setup:static-content:deploy
lub `setup: di: compile.Dla porównania używam wersji 2.1.5 .
źródło
Zaczerpnięte z bloga Alana Storma .
Kompilacja wtrysku zależności
Na początek powinniśmy wyjaśnić problem, który te polecenia próbują rozwiązać. Kiedy wysyłasz system Magento 2 do produkcji, musisz uruchomić następujące polecenie
To polecenie skanuje kod w systemie i generuje wstępnie wiele rzeczy (głównie związanych z systemem zarządzania obiektami i wstrzykiwaniem zależności), które Magento ładuje dynamicznie podczas pracy w trybie programisty. Jest to zarówno kwestia wydajności, jak i bezpieczeństwa, a pełne omówienie tego jest poza zakresem tego artykułu.
źródło