W jakim przypadku musimy uruchomić to polecenie magento setup:di:compile
?
pub/static
W jakim przypadku musimy uruchomić to polecenie magento setup:di:compile
?
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.
bin/magento setup:di:compile-multi-tenant
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ć.
var/generation
?
Action
test. - Załadowano stronę, błąd. - Usunięte di
i generation
foldery, ponownie załadowane, działa. - Dodaj nową zależność, przeładuj stronę, błąd. Jednak żaden di
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 foldery var/di
i przed ponownym załadowaniem strony .var/generation
Z moich własnych testów Magento odtworzy var/generation
folder, ale nie var/di
folder, dopóki nie setup:di:compile
zostanie ponownie uruchomiony. Oznacza to, że powinieneś mieć tylko var/generation
folder do usunięcia.
Co zabawne, działa to również z pub/static/*
i setup: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 .
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
php bin/magento setup:di:compile
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.