Wenn Sie die Discourse Theme CLI in einem Theme-Komponenten-Repository mit installiertem pnpm node_modules ausführen, gibt der Befehl discourse_theme watch . Fehler aus, dass Verzeichnisse wie node_modules/.pnpm bereits überwacht werden. Oberflächlich betrachtet liegt dies daran, dass die Pakete per Symlink verbunden sind.
Ich habe dies in einem frischen GitHub Codespace mit der offiziellen Mermaid TC unter Verwendung von discourse_theme v2.1.3 getestet.
Auszug aus den Fehlerprotokollen
** ERROR: directory is already being watched! **
Directory: /workspaces/discourse-mermaid-theme-component/node_modules/.pnpm/ember-template-recast@6.1.5/node_modules/@glimmer/reference
is already being watched through: /workspaces/discourse-mermaid-theme-component/node_modules/.pnpm/@glimmer+reference@0.84.3/node_modules/@glimmer/reference
MORE INFO: https://github.com/guard/listen/blob/master/README.md
** ERROR: directory is already being watched! **
Directory: /workspaces/discourse-mermaid-theme-component/node_modules/.pnpm/@humanwhocodes+retry@0.3.1/node_modules/@humanwhocodes/retry
is already being watched through: /workspaces/discourse-mermaid-theme-component/node_modules/.pnpm/@humanwhocodes+retry@0.3.1/node_modules/@humanwhocodes/retry
MORE INFO: https://github.com/guard/listen/blob/master/README.md
Ich vermute, dass dies damit zusammenhängt, dass discourse_theme das gesamte Verzeichnis überwacht, ohne Ausnahmen für node_modules/.pnpm oder node_modules im Allgemeinen festzulegen.
Es ist kein großes Problem, da discourse_theme watch nach den Fehlern anscheinend einwandfrei funktioniert, aber ich sehe die Meldung "Watching for changes..." nach den Fehlern nicht, die von https://github.com/discourse/discourse_theme/blob/main/lib/discourse_theme/watcher.rb#L45-L48 stammen sollte, was zu Verwirrung führen könnte. Außerdem fühlt es sich nicht gut an, von npm/yarn zu pnpm zu wechseln, nur um dann zu sehen, wie die CLI eine Reihe von Fehlern auf den Bildschirm wirft.
Ich verwende es aus dem TC-Verzeichnis selbst heraus, da ich das Theme normalerweise entweder gegen meine lokale Entwicklungsinstanz, eine Entwicklungs kopie des Forums, das sich nicht auf meinem Computer befindet, oder die Theme Creator-Website entwickle/teste (bei der der API-Schlüsselgenerator in letzter Zeit nicht zu funktionieren scheint). Ich versuche, Verwirrung darüber zu vermeiden, in welcher Umgebung ich arbeite.
Ich habe Mermaid TC in denselben Codespace geklont wie eine frische Discourse Codespace-Installation und versucht, discourse_theme watch vom Discourse-Verzeichnis aus auszuführen. Es gibt die gleichen Fehler.
Sicher, es ist willkürlich, aber es ist ein wenig lächerlich, discourse_theme aus einem lokalen Klon von Discourse ausführen zu müssen, wenn die zu testende Discourse-Instanz nicht die lokale Instanz ist.
Wie auch immer, ich habe wie von Ihnen vorgeschlagen sowohl in einem frischen GitHub Codespace als auch in meiner eigenen Entwicklungsumgebung Folgendes getan, und es treten immer noch dieselben Fehler auf.
Wenn ich das gesamte Protokoll (oder alle, die in den Terminalverlauf passen) durchlese, sind alle Verzeichnisse, bei denen ein Fehler auftritt, /node_modules/.pnpm. Beim Testen und Ausführen von discourse_theme gegen eine andere TC, die noch nicht auf pnpm anstelle von yarn aktualisiert wurde, sehe ich keine Fehler. Daher bin ich mir fast zu 100 % sicher, dass das Problem darin liegt, dass .pnpm beobachtet wird.
Von Symlinked `node_modules` structure | pnpm sieht es so aus, als ob die normale Struktur von node_modules erhalten bleibt, indem der gesamte tatsächliche Code in /node_modules/.pnpm verschoben wird und die übrigen Verzeichnisse in /node_modules/ nur Symlinks zu .pnpm sind. Das Ignorieren von .pnpm vermeidet also den Fehler „Verzeichnis wird bereits überwacht!“.
Ich habe ein wenig mit dem discourse_theme-Gem gespielt und listener.ignore /node_modules\\/\\.pnpm/ zu watcher.rb hinzugefügt, und es scheint ohne Fehlermeldungen gut zu funktionieren. Es hat sogar eine Neuinstallation eines pnpm-Pakets erkannt.
Dieser PR wird die Ignorierregel anwenden und die Warnungen unterdrücken. Danke für die Erstellung des Themas und die Untersuchung, @Alteras – diese Warnungen haben mich auch genervt!