Quali comandi di compilazione sono necessari in modalità sviluppatore e quando?


24

Qualcuno può darmi istruzioni su quando eseguire quali comandi di compilazione in modalità sviluppatore Magento 2? Non sono sicuro di averlo capito bene.

In devdocs, la modalità sviluppatore è descritta come segue:

  • I file di visualizzazione statica non vengono memorizzati nella cache; vengono scritti nella directory pub / static di Magento ogni volta che vengono chiamati

Ciò significa che ogni singolo file in pub / static viene generato quando viene richiesto e non è mai necessario chiamare setup:static-content:deploy? Questo contraddice la mia esperienza. O posso eliminare qualsiasi file e verranno rigenerati? Inoltre, le immagini, i file CSS e JS sembrano essere trattati in modo diverso.

La pagina della documentazione in modalità sviluppatore non dice nulla sulla compilazione del codice, ma penso che ci sia stata anche una differenza, quindi non è stato necessario eseguire setup:di:compiledopo tutte le modifiche ai di.xmlfile. È corretto e, in tal caso, come funziona la generazione del codice in modalità sviluppatore?

In altre parole: cache a parte, quali comandi devo eseguire dopo quali modifiche?

Risposte:


27

attenzione: ho riscontrato che l' eliminazione nella modalità sviluppatorepub/static interromperà il meccanismo perché ti sbarazzi del .htaccessfile che rende magica quella cartella.

Se mantieni il pub/static/.htaccessfile in modalità sviluppatore non è necessario eseguire alcun comando di compilazione: Magento creerà collegamenti simbolici ai file non appena richiesti. Ciò significa che le modifiche alle risorse statiche saranno immediatamente visibili, a condizione che anche la cache sia disabilitata.

È possibile eliminare il pub/static/frontendo pub/static/adminhtmlinvece.

In modalità predefinita le risorse sono materializzate in una pub/staticsottocartella, nel senso che vengono create (copiate, non collegate simbolicamente) alla prima richiesta. Se li modifichi devi svuotare la cache per averli aggiornati.

In modalità produzione le risorse non vengono materializzate (causando errore HTTP 404 su richiesta) fino a quando non si esegue il bin/magento setup:static-content:deploycomando.

Spero che sia d'aiuto.


Che dire della compilazione DI?
Erfan,

@Erfan cosa intendi più precisamente?
Alessandro Ronchi,

2
La domanda fa anche domande sull'effetto della modalità deploy sulla compilazione DI. Ho appena fatto un test rapido e, se sei in modalità sviluppatore, non è necessario compilare DI per visualizzare le modifiche di.xml(sembra che la generazione del codice sia fatta al volo per ogni hit di pagina?) Comunque, ho pensato che sarebbe stata una buona aggiunta alla tua già buona risposta!
Erfan,

Hai ragione @Erfan
Alessandro Ronchi il

1+ Grazie fratello. Ha funzionato come un fascino. Ho avuto una brutta esperienza eseguendo la distribuzione ripetuta di comandi al fine di ottenere le mie modifiche da meno a CSS anche in modalità sviluppatore. Ho copiato .htaccess da un altro progetto e incollato nella posizione menzionata. Khalaaas!
Umar Yousaf,

4

dalla mia esperienza, non è necessario eseguire alcun comando per la generazione di codice / file statico in modalità sviluppatore.

Se i file statici non sono stati generati, potrebbe esserci un altro problema.

Vedo due motivi per questo a prima vista:

  • la modalità sviluppatore non funziona correttamente. forse l'attivazione non è riuscita per qualche motivo
  • la riscrittura per i file statici su pub / static.php non funziona

1
Il mio file meno in pub / static non viene rigenerato. Hai questo problema. Come farlo rigenerare automaticamente
mrtuvn

È importante che la modalità sviluppatore sia attiva e che anche le riscritture funzionino, poiché qualsiasi richiesta di file statici viene riscritta prima su pub / static.php che quindi genera il file (in modalità sviluppatore) sotto pub / static se non è già presente
David Verholen,

4

Ciò significa che ogni singolo file in pub / static viene generato quando viene richiesto e non è mai necessario chiamare setup:static-content:deploy? Questo contraddice la mia esperienza. O posso eliminare qualsiasi file e verranno rigenerati?

Sì. Ma secondo la mia esperienza questo non funziona la maggior parte delle volte. Potrebbe essere un bug. La soluzione migliore è eliminare il pub/staticcontenuto e distribuire nuovamente il contenuto statico ogni volta che si modifica il file statico (js, css, html, ecc.) Anche se è già stata attivata la modalità sviluppatore. La mia domanda su questo.


Dipende da come lo vedi. Se vuoi eseguire il programma di installazione: static-content: distribuisci ogni volta che apporti una modifica, ci vorranno anni per completare un progetto perché in pratica stai creando ogni singolo file per il tuo negozio quando aggiorni solo un file. Quindi, la mia soluzione era quella di sovrascrivere i file all'interno di pub / static e svuotare la cache per vedere le mie modifiche. Una volta che sono soddisfatto dei miei risultati, andrò al mio tema o ai file del modulo personalizzato per sovrascrivere i miei file principali ed eseguire quindi setup: static-content: deploy per aggiornare i miei file statici.
Wolfgang Leon,

4

Giusto per chiarire tra le tre diverse modalità (fonte: corso Magento U Fundamentals). In grassetto, i punti specifici relativi alla tua domanda.

modalità sviluppatore

  • La materializzazione di file statici non è abilitata.
  • Eccezioni non rilevate visualizzate nel browser
  • Eccezioni generate nel gestore errori, non registrate
  • Accesso al sistema var/report, altamente dettagliato.

È necessario utilizzare la modalità sviluppatore durante lo sviluppo di personalizzazioni o estensioni. Il vantaggio principale di questa modalità è che i messaggi di errore sono visibili all'utente. Non dovrebbe essere usato in produzione a causa del suo impatto sulle prestazioni. In modalità sviluppatore, i file di visualizzazione statici vengono generati ogni volta che vengono richiesti. Vengono scritti nella pub/staticdirectory, ma questa cache non viene utilizzata. Ciò ha un grande impatto sulle prestazioni, ma qualsiasi modifica apportata da uno sviluppatore per visualizzare i file è immediatamente visibile.

Le eccezioni non rilevate vengono visualizzate nel browser, anziché essere registrate. Viene generata un'eccezione ogni volta che un sottoscrittore di eventi non può essere invocato.

L'accesso al sistema var/reportè altamente dettagliato in questa modalità.

Modalità di produzione

  • Fase di implementazione sul sistema produttivo; massima prestazione
  • Le eccezioni non vengono visualizzate per l'utente - scritte solo nei registri.
  • Questa modalità disabilita la materializzazione dei file statici.
  • Il docroot Magento può avere autorizzazioni di sola lettura.

Magento deve essere eseguito in modalità Produzione una volta distribuito su un server di produzione.

La modalità di produzione offre le massime prestazioni in Magento 2.

L'aspetto più importante di questa modalità è che gli errori vengono registrati nel file system e non vengono mai visualizzati all'utente. In questa modalità, i file di vista statici non vengono creati al volo quando vengono richiesti; invece, devono essere distribuiti nella pub/staticdirectory usando lo strumento da riga di comando. Le pagine generate conterranno collegamenti diretti alle risorse di pagina distribuite.

Qualsiasi modifica per visualizzare i file richiede di eseguire nuovamente lo strumento di distribuzione.

Poiché i file di visualizzazione vengono distribuiti utilizzando lo strumento CLI, l'utente Web deve disporre dell'accesso in scrittura. La pub/staticdirectory Magento può avere autorizzazioni di sola lettura, che è un'impostazione più sicura su un server accessibile pubblicamente.

Modalità di default

  • Utilizzato quando non viene specificata un'altra modalità
  • Nasconde le eccezioni dall'utente e le scrive nei file di registro
  • La materializzazione dei file statici è abilitata.
  • Sconsigliato / non ottimizzato per la produzione: la memorizzazione nella cache influisce negativamente sulle prestazioni.

Come suggerisce il nome, la modalità predefinita è il modo in cui funziona il software Magento se non viene specificata un'altra modalità.

In questa modalità, gli errori vengono registrati nei file var/reportse non vengono mai mostrati a un utente. I file di visualizzazione statica vengono materializzati al volo e quindi memorizzati nella cache.

A differenza della modalità sviluppatore, le modifiche ai file di visualizzazione non sono visibili fino a quando i file di visualizzazione statica generati non vengono cancellati.

La modalità predefinita non è ottimizzata per un ambiente di produzione, principalmente a causa dell'impatto negativo sulle prestazioni dei file statici che si materializzano al volo piuttosto che generarli e distribuirli in anticipo .

In altre parole, la creazione immediata di file statici e la memorizzazione nella cache ha un impatto sulle prestazioni maggiore rispetto alla loro generazione mediante lo strumento da riga di comando per la creazione di file statici.

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.