Welche Kompilierungsbefehle werden im Entwicklermodus wann benötigt?

24

Kann mir jemand Anweisungen geben, wann ich welche Kompilierungsbefehle im Magento 2-Entwicklermodus ausführen soll? Ich bin mir nicht sicher, ob ich es richtig verstanden habe.

In den devdocs wird der Entwicklermodus wie folgt beschrieben:

  • Statische Ansichtsdateien werden nicht zwischengespeichert. Sie werden bei jedem Aufruf in das Verzeichnis pub / static von Magento geschrieben

Bedeutet das, dass jede einzelne Datei in pub / static generiert wird, wenn sie angefordert wird und Sie nie aufrufen müssen setup:static-content:deploy? Dies widerspricht meiner Erfahrung. Oder kann ich irgendwelche Dateien löschen und sie werden neu generiert? Außerdem scheinen Bilder, CSS- und JS-Dateien unterschiedlich behandelt zu werden.

Die Dokumentationsseite zum Entwicklermodus enthält keine Informationen zur Codekompilierung, aber ich denke, es gab auch einen Unterschied, sodass es nicht erforderlich war, setup:di:compilenach allen Änderungen an di.xmlDateien auszuführen . Ist das richtig und wenn ja, wie funktioniert die Codegenerierung im Entwicklermodus?

Mit anderen Worten: Cache beiseite, welche Befehle muss ich nach welchen Änderungen ausführen?

Fabian Schmengler
quelle

Antworten:

27

Achtung: Ich habe festgestellt, dass das Löschen im Entwicklermoduspub/static den Mechanismus zum Erliegen bringt, weil Sie die .htaccessDatei entfernen, die die Magie in diesem Ordner hervorruft.

Wenn Sie die pub/static/.htaccessDatei im Entwicklermodus halten, müssen Sie keinen Kompilierungsbefehl ausführen: Magento erstellt Symlinks zu Dateien, sobald sie angefordert werden. Das bedeutet, dass Änderungen an statischen Assets sofort sichtbar sind, vorausgesetzt, Sie haben auch den Cache deaktiviert.

Sie können stattdessen das pub/static/frontendoder löschen pub/static/adminhtml.

Im Standardmodus Vermögenswerte werden materialisiert in pub/staticUnterordner, was bedeutet , sie erstellt werden (kopiert, nicht über symbolische Links) auf dem ersten Anfrage. Wenn Sie sie ändern, müssen Sie den Cache leeren, damit sie aktualisiert werden.

Im Produktionsmodus werden Assets erst dann materialisiert (was auf Anfrage einen HTTP-Fehler 404 verursacht), wenn Sie den bin/magento setup:static-content:deployBefehl ausführen .

Ich hoffe es hilft.

Alessandro Ronchi
quelle
Was ist mit der DI-Kompilierung?
Erfan
@Erfan was meinst du genauer?
Alessandro Ronchi
2
Die Frage fragt auch nach den Auswirkungen des Bereitstellungsmodus auf die DI-Kompilierung. Ich habe gerade einen kurzen Test durchgeführt, und wenn Sie sich im Entwicklermodus befinden, müssen Sie DI nicht kompilieren, damit Ihre Änderungen in di.xmlangezeigt werden. dachte, es wäre eine gute Ergänzung zu Ihrer bereits guten Antwort!
Erfan
Sie sind richtig @Erfan
Alessandro Ronchi
1+ Danke Bruder. Lief wie am Schnürchen. Ich hatte eine sehr schlechte Erfahrung damit, Befehle wiederholt auszuführen, um meine Änderungen auch im Entwicklermodus von weniger auf CSS zu übertragen. Ich habe .htaccess aus einem anderen Projekt kopiert und an der angegebenen Stelle eingefügt. Khalaaas!
Umar Yousaf
4

Nach meiner Erfahrung müssen Sie im Entwicklermodus keine Befehle für die Generierung von Code / statischen Dateien ausführen.

Wenn die statischen Dateien nicht generiert wurden, liegt möglicherweise ein anderes Problem vor.

Ich sehe zwei Gründe dafür auf den ersten Blick:

  • Entwicklermodus funktioniert nicht richtig. Vielleicht ist die Aktivierung aus irgendeinem Grund fehlgeschlagen
  • Das Umschreiben für statische Dateien in der Datei pub / static.php funktioniert nicht
David Verholen
quelle
1
Meine less-Datei in pub / static wird nicht neu generiert. Bekommst du dieses Problem. Wie man es automatisch regenerieren lässt
mrtuvn
Es ist wichtig, dass der Entwicklermodus aktiv ist und auch die Umschreibungen funktionieren, da jede Anfrage nach statischen Dateien zuerst in die Datei pub / static.php umgeschrieben wird, die dann die Datei (im Entwicklermodus) unter pub / static generiert, wenn sie noch nicht vorhanden ist
David Verholen
4

Bedeutet das, dass jede einzelne Datei in pub / static generiert wird, wenn sie angefordert wird und Sie nie aufrufen müssen setup:static-content:deploy? Dies widerspricht meiner Erfahrung. Oder kann ich irgendwelche Dateien löschen und sie werden neu generiert?

Ja. Aber meiner Erfahrung nach funktioniert das die meiste Zeit nicht. Könnte ein Bug sein. Die bessere Lösung besteht darin, pub/staticInhalte zu löschen und statische Inhalte erneut bereitzustellen, wenn Sie statische Dateien (js, css, html usw.) geändert haben, auch wenn Sie den Entwicklermodus bereits aktiviert haben. Meine eigene Frage dazu.

Janaka Dombawela
quelle
Es hängt davon ab, wie Sie es sehen. Wenn Sie setup ausführen möchten: static-content: Bei jeder Änderung implementieren, dauert es Jahre, bis ein Projekt abgeschlossen ist, da Sie im Grunde jede einzelne Datei für Ihren Shop erstellen, wenn Sie nur eine Datei aktualisieren. Daher bestand meine Lösung darin, die Dateien in pub / static zu überschreiben und den Cache zu leeren, um meine Änderungen zu sehen. Sobald ich mit meinen Ergebnissen zufrieden bin, gehe ich zu meinem Thema oder zu meinen benutzerdefinierten Moduldateien, um meine Hauptdateien zu überschreiben, und führe dann das folgende Setup aus: static-content: deploy, um meine statischen Dateien zu aktualisieren.
Wolfgang Leon
4

Nur um zwischen den drei verschiedenen Modi zu unterscheiden (Quelle: Magento U Fundamentals-Kurs). Fettgedruckt beziehen sich die spezifischen Punkte auf Ihre Frage.

Entwicklermodus

  • Statische Dateimaterialisierung ist nicht aktiviert.
  • Nicht erfasste Ausnahmen werden im Browser angezeigt
  • Ausnahmen in Fehlerbehandlungsroutine ausgelöst, nicht protokolliert
  • Systemanmeldung var/report, sehr detailliert.

Sie sollten den Entwicklermodus verwenden, während Sie Anpassungen oder Erweiterungen entwickeln. Der Hauptvorteil dieses Modus ist, dass Fehlermeldungen für Sie sichtbar sind. Es sollte wegen seiner Auswirkung auf die Leistung nicht in der Produktion verwendet werden. Im Entwicklermodus werden statische Ansichtsdateien bei jeder Anforderung generiert. Sie werden in das pub/staticVerzeichnis geschrieben, aber dieser Cache wird nicht verwendet. Dies hat große Auswirkungen auf die Leistung, aber alle Änderungen, die ein Entwickler an der Anzeige von Dateien vornimmt, sind sofort sichtbar.

Nicht erfasste Ausnahmen werden im Browser angezeigt, anstatt protokolliert zu werden. Eine Ausnahme wird ausgelöst, wenn ein Ereignisabonnent nicht aufgerufen werden kann.

Die Systemanmeldung var/reportist in diesem Modus sehr detailliert.

Produktionsmodus

  • Bereitstellungsphase auf dem Produktionssystem; höchste leistung
  • Ausnahmen werden dem Benutzer nicht angezeigt - sie werden nur in Protokolle geschrieben.
  • Dieser Modus deaktiviert die statische Dateimaterialisierung.
  • Das Magento-Docroot kann nur Leseberechtigungen haben.

Sie sollten Magento im Produktionsmodus ausführen, sobald es auf einem Produktionsserver bereitgestellt wurde.

Der Produktionsmodus bietet die höchste Leistung in Magento 2.

Der wichtigste Aspekt dieses Modus ist, dass Fehler im Dateisystem protokolliert und dem Benutzer nie angezeigt werden. In diesem Modus werden statische Ansichtsdateien nicht sofort erstellt, wenn sie angefordert werden. Stattdessen müssen sie pub/staticmit dem Befehlszeilentool im Verzeichnis bereitgestellt werden . Die generierten Seiten enthalten direkte Links zu den bereitgestellten Seitenressourcen.

Für Änderungen an der Anzeige von Dateien muss das Bereitstellungstool erneut ausgeführt werden.

Da die Ansichtsdateien mit dem CLI-Tool bereitgestellt werden, muss der Webbenutzer über Schreibzugriff verfügen. Das Magento- pub/staticVerzeichnis kann schreibgeschützt sein. Dies ist eine sicherere Einrichtung auf einem öffentlich zugänglichen Server.

Standardmodus

  • Wird verwendet, wenn kein anderer Modus angegeben ist
  • Versteckt Ausnahmen vor dem Benutzer und schreibt sie in Protokolldateien
  • Die statische Dateimaterialisierung ist aktiviert.
  • Nicht empfohlen / nicht für die Produktion optimiert: Caching beeinträchtigt die Leistung negativ.

Wie der Name schon sagt, arbeitet die Magento-Software im Standardmodus, wenn kein anderer Modus angegeben ist.

In diesem Modus werden Fehler in Dateien protokolliert var/reportsund keinem Benutzer angezeigt. Statische Ansichtsdateien werden sofort materialisiert und dann zwischengespeichert.

Im Gegensatz zum Entwicklermodus sind Ansichtsdateiänderungen erst sichtbar, wenn die generierten statischen Ansichtsdateien gelöscht wurden.

Der Standardmodus ist nicht für eine Produktionsumgebung optimiert, hauptsächlich aufgrund der nachteiligen Auswirkungen auf die Leistung, die statische Dateien im laufenden Betrieb haben, anstatt sie zuvor zu generieren und bereitzustellen .

Mit anderen Worten, das direkte Erstellen und Zwischenspeichern von statischen Dateien hat eine größere Auswirkung auf die Leistung als das Generieren mit dem Befehlszeilentool zum Erstellen statischer Dateien.

Raphael bei Digital Pianism
quelle