Hallo zusammen. Entschuldigung, falls dies bereits behandelt wurde (ich habe es nicht gefunden):
Die Entwicklung eines Discourse-Plugins auf meinem lokalen Rechner ist ziemlich langsam. Jeder Neuladevorgang meiner lokal laufenden Anwendung (um Code-Änderungen anzusehen) dauert über 5 Sekunden. Also ändere ich etwas in einer HTML-/HBS- oder JS-Datei, speichere, muss dann die App neu laden [edit: den Browser aktualisieren] und 5+ Sekunden warten, um die Änderung zu sehen.
Gibt es eine Möglichkeit, ein Hot-Reload (also automatische Aktualisierung der lokalen Ansicht) für die lokale Discourse-Plugin-Entwicklung zu nutzen?
Es scheint, als würden CSS-Dateien automatisch aktualisiert, aber keine HTML-/HBS- oder JS-Dateien.
Obwohl ich darauf achte, ob es irgendwelche Hinweise gibt, denke ich, dass es einfach so ist. Und soweit ich das beurteilen kann, ist es auf einem Mac viel schlimmer.
Ich spreche hier vom Neuladen des Browsers und ob Hot Reload verfügbar ist, um dies zu vermeiden. Das Neuladen des Browsers dauert nämlich über 5 Sekunden, bis eine Änderung sichtbar wird.
Wenn ich den Server stoppen und neu starten muss (z. B. bei Änderungen an plugin.rb), dauert das wahrscheinlich 60 Sekunden.
Hot Reload ist heutzutage bei vielen Technologien der Standard für die Entwicklung (ich bin am besten mit Angular vertraut, das diesen Standard hat) und ist für die Entwicklung fantastisch. Ich glaube, bei Rails ist das über Webpack möglich (bin mir aber nicht sicher). Mein Eindruck ist, dass Hot Reload für die Entwicklung von Discourse nicht verfügbar ist, aber ich wollte nachfragen, weil es toll wäre, wenn es das gäbe.
Das klingt super, danke. Um das für die lokale Entwicklung zu nutzen, muss ich dann noch etwas anderes tun, als die neueste Version von Discourse von GitHub auf meinen Computer herunterzuladen?
Ich hatte große Freude daran, meine lokale Discourse-Instanz zu aktualisieren, und betreibe jetzt lokal Version 2.8. Allerdings funktioniert das Hot-Reload für HTML- und JS-Änderungen noch nicht.
So starte ich die Anwendung:
In den Discourse-Ordner wechseln
$ redis-server //Startet den Server
$ rails s//Startet die Rails-Anwendung
$ yarn//Diesen Befehl sollte man nur beim ersten Mal ausführen, nehme ich an
$ bin/ember-cli//Startet Ember CLI. Der Befehl ember serve --proxy "http://localhost:3000" hat aus irgendeinem Grund Fehler ausgegeben
Die Anwendung läuft erfolgreich unter localhost:4200.
Ich habe ein Plugin in die lokale Discourse-Instanz integriert, das erfolgreich unter localhost:4200 angezeigt wird. Wenn ich jedoch Änderungen an den HTML- oder JS-Dateien vornehme, werden diese Änderungen nur angezeigt, wenn ich den Browser neu lade.
Muss ich noch etwas anderes tun, damit das Hot-Reload funktioniert?
Hallo. Ist Hot-Reload mit ember-cli in Discourse verfügbar? Ich habe immer noch das gleiche Problem, das ich in meinem vorherigen Beitrag erwähnt habe. Nach Befolgen dieser Schritte erhalte ich immer noch kein Hot-Reload (d. h. ich muss den Browser immer noch aktualisieren, um Änderungen an HTML und JavaScript zu sehen, und die Ausgabe von ember-cli im Terminal scheint nicht zu registrieren, wenn ich nach einer Dateispeicherung auf Speichern klicke).
Ich würde es wirklich sehr begrüßen, wenn ein Live-Reload möglich wäre (besonders für JavaScript-Dateien). Wenn ich in anderen Umgebungen arbeite, in denen Live-Reload Standard ist, beschleunigt es den Programmierprozess erheblich und macht ihn viel angenehmer.
" livereload.js initiiert eine WebSocket-Verbindung zurück zu Ember CLI. Dies ermöglicht es Ember CLI, den Browser zu benachrichtigen, um nach Änderungen an JavaScript oder Styles eine Aktualisierung auszulösen."
Ich bin neugierig, warum der Browser dies ignoriert – ich frage mich, ob es eine Option im Browser im Zusammenhang mit der Site-Sicherheit gibt?
Ich bin mir nicht sicher, aber ich konnte Live-Reload im Browser in anderen Kontexten bzw. anderen Frameworks definitiv nutzen. (Bezüglich Ember bin ich mir nicht sicher – ich habe es bisher nur bei der Entwicklung von Discourse-Inhalten verwendet.)
Mich interessiert, ob Live-Reload erwartet wird. Aus der vorherigen Diskussion scheint das der Fall zu sein. In diesem Fall frage ich mich, ob das Discourse-Team Live-Reload nutzt und ob sie etwas tun, was ich nicht tue.
Es wäre sicher schön, eine offizielle Aussage zu erhalten, inwieweit Livereload hier funktionieren sollte und ob es über CSS auf der Client-Seite hinausgeht.
Das automatische Neuladen der Seite wird von ember CLI übernommen. Derzeit werden Theme- und Plugin-Assets von der Rails-Anwendung kompiliert und bereitgestellt, nicht von ember CLI. Daher führen Änderungen am Theme oder an Plugins nicht zu einem automatischen Neuladen der Seite.
Dies könnte etwas sein, das wir in Zukunft verbessern können. Aber derzeit ist dieses Verhalten erwartet.