In quale caso dobbiamo eseguire questo comando magento setup:di:compile
?
pub/static
In quale caso dobbiamo eseguire questo comando magento setup:di:compile
?
pub/static
Risposte:
Durante l'implementazione (ovvero quando sono state apportate modifiche a un sistema in modalità di produzione)
Si noti che in modalità di produzione (versioni 2.0.5 e precedenti) è necessario utilizzare la compilazione "multi-tenant". Risolto in 2.0.6 e versioni successive.
bin/magento setup:di:compile-multi-tenant
Vedi: http://devdocs.magento.com/guides/v2.0/config-guide/cli/config-cli-subcommands-compiler.html
Puoi anche utilizzare la compilazione in modalità di sviluppo, che dovrebbe accelerare il sito, ma d'altra parte rallenta lo sviluppo, perché dovrai eseguirlo bin/magento setup:di:compile
ogni volta che aggiungi nuove classi con dipendenze (parametri del costruttore) o cambi dipendenze di classi esistenti .
Questo è facoltativo e probabilmente non è una buona idea. Se hai già eseguito la compilazione nell'ambiente di sviluppo, eliminare i file in var/di
per disattivarlo.
var/generation
?
Action
da testare. - Caricata la pagina, errore. - Eliminato di
e generation
cartelle, ricaricato, funziona. - Aggiungi nuova dipendenza, ricarica pagina, errore. Tuttavia non di
viene generata alcuna cartella. - Elimina di generation
nuovo, ricarica, funziona. Conclusione: eliminare la cartella di generazione dopo aver aggiunto le dipendenze e non sarà necessario eseguire setup:di:compile
. Se qualcun altro potesse confermarlo, sarebbe fantastico.
Secondo il mio commento su un'altra risposta:
È possibile evitare di eseguire il setup:di:compile
comando ogni volta che si aggiunge una dipendenza semplicemente eliminando le cartelle var/di
e prima di ricaricare la pagina .var/generation
Dai miei test, Magento ricrea la var/generation
cartella, ma non la var/di
cartella fino a quando non setup:di:compile
viene eseguita nuovamente. Questo significa che dovresti avere solo la var/generation
cartella da eliminare.
Stranamente, funziona anche con pub/static/*
e setup:static-content:deploy
. Questo perché Magento sembra creare collegamenti simbolici ai file necessari se il contenuto statico viene creato mediante il ricaricamento della pagina, anziché tramite la CLI.
Le persone nel nostro ufficio avevano problemi ad eseguire i comandi sopra durante l'utilizzo di Docker per Mac. L'elaborazione del file è stata troppo lenta. Utilizzando i passaggi precedenti, lo sviluppo dovrebbe essere molto più rapido.
Probabilmente è meglio notare che questo non funzionerà in modalità produzione o predefinita. Questo è solo per lo sviluppo. Come menzionato da Fabian Schmengler, il ricaricamento della pagina iniziale sarà più lento del normale, ma non dovrebbe essere lento come l'esecuzione setup:static-content:deploy
o `setup: di: compilare.
Per riferimento, sto eseguendo la versione 2.1.5 .
Tratto dal blog di Alan Storm .
Compilazione dell'iniezione di dipendenza
Per iniziare, dovremmo spiegare il problema che questi comandi stanno cercando di risolvere. Quando spedisci un sistema Magento 2 in produzione, devi eseguire il seguente comando
php bin/magento setup:di:compile
Questo comando esegue la scansione del codice nel tuo sistema e genera in anticipo una serie di cose (principalmente legate al sistema di gestione degli oggetti e all'iniezione delle dipendenze) che Magento carica dinamicamente quando sei in esecuzione in modalità sviluppatore. Questa è sia una questione di prestazioni che di sicurezza e discuterne per intero è oltre lo scopo di questo articolo.