magento 2 - In che caso è necessario eseguire questo comando magento setup: di: compile?


12

In quale caso dobbiamo eseguire questo comando magento setup:di:compile?


Dopo aver installato i nuovi moduli e vuoi cancellare alcuni registri
Jaleel

e qualcos'altro?
MrTo-Kane

Anche quando si passa alla modalità di produzione perché in quella modalità, non viene generato alcun contenuto statico; è tutto servito dapub/static
Steve Johnson

Risposte:


8
  • 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:compileogni 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/diper disattivarlo.


1
setup: di: compile-multi-tenant è stato rimosso
Antonino Bonumore il

Possiamo per favore avere una conferma se la cancellazione del trucco var / di cartella funziona? Non sembra per me
Wildcard27

@ Wildcard27 cosa succede se si eliminano anche le directory in var/generation?
Fabian Schmengler,

@FabianSchmengler Ne ho appena creato uno Actionda testare. - Caricata la pagina, errore. - Eliminato die generationcartelle, ricaricato, funziona. - Aggiungi nuova dipendenza, ricarica pagina, errore. Tuttavia non diviene generata alcuna cartella. - Elimina di generationnuovo, 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.
Wildcard27

1

Secondo il mio commento su un'altra risposta:

È possibile evitare di eseguire il setup:di:compilecomando ogni volta che si aggiunge una dipendenza semplicemente eliminando le cartelle var/die prima di ricaricare la pagina .var/generation

Dai miei test, Magento ricrea la var/generationcartella, ma non la var/dicartella fino a quando non setup:di:compileviene eseguita nuovamente. Questo significa che dovresti avere solo la var/generationcartella 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:deployo `setup: di: compilare.

Per riferimento, sto eseguendo la versione 2.1.5 .


0

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.


1
"Questa è una cosa sia per quanto riguarda le prestazioni che per la sicurezza, e discuterne per intero va oltre lo scopo di questo articolo." questo lo ha dato via. copia palese di Alan Storm: alanstorm.com/magento_2_di_compile_pre-scan_with_commerce_bug
Fabian Schmengler
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.