Lorsque vous exécutez le CLI de thème Discourse dans un dépôt de composant de thème avec des node_modules installés via pnpm, la commande discourse_theme watch . renverra des erreurs concernant les répertoires node_modules/.pnpm déjà surveillés. À première vue, cela est dû au fait que les packages sont liés par des symboles.
J’ai testé cela dans un nouveau GitHub Codespace en utilisant le composant de thème mermaid officiel, en utilisant discourse_theme v2.1.3.
Extrait des journaux d'erreurs
** ERREUR : le répertoire est déjà surveillé ! **
Répertoire : /workspaces/discourse-mermaid-theme-component/node_modules/.pnpm/ember-template-recast@6.1.5/node_modules/@glimmer/reference
est déjà surveillé via : /workspaces/discourse-mermaid-theme-component/node_modules/.pnpm/@glimmer+reference@0.84.3/node_modules/@glimmer/reference
PLUS D'INFOS : https://github.com/guard/listen/blob/master/README.md
** ERREUR : le répertoire est déjà surveillé ! **
Répertoire : /workspaces/discourse-mermaid-theme-component/node_modules/.pnpm/@humanwhocodes+retry@0.3.1/node_modules/@humanwhocodes/retry
est déjà surveillé via : /workspaces/discourse-mermaid-theme-component/node_modules/.pnpm/@humanwhocodes+retry@0.3.1/node_modules/@humanwhocodes/retry
PLUS D'INFOS : https://github.com/guard/listen/blob/master/README.md
Je soupçonne que cela est lié au fait que discourse_theme surveille tout le répertoire sans aucune exclusion pour node_modules/.pnpm ou node_modules en général.
Ce n’est pas un problème majeur car discourse_theme watch semble fonctionner correctement après les erreurs, mais je ne vois pas le message "Watching for changes..." après les erreurs qui est censé provenir de https://github.com/discourse/discourse_theme/blob/main/lib/discourse_theme/watcher.rb#L45-L48, donc cela pourrait prêter à confusion. De plus, il n’est pas agréable de passer de npm/yarn à pnpm pour voir le CLI afficher une série d’erreurs à l’écran.
Je l’utilise depuis le répertoire TC lui-même, car je développe/teste généralement le thème soit sur mon instance de développement locale, soit sur une copie de développement du forum qui n’est pas sur ma machine, soit sur le site Theme Creator (dont le générateur de clé API ne semble pas fonctionner dernièrement). J’essaie d’éviter toute confusion quant à l’environnement dans lequel je travaille.
J’ai cloné le mermaid TC via git dans le même codespace qu’une installation fraîche de discourse codespace et j’ai essayé d’exécuter le discourse_theme watch depuis le répertoire discourse à la place. Cela donne les mêmes erreurs.
Certes, c’est arbitraire, mais il est un peu ridicule de devoir exécuter le discourse_theme à partir d’un clone local de discourse alors que l’instance de discourse testée n’est pas l’instance locale.
Quoi qu’il en soit, j’ai fait ce que vous avez suggéré, à la fois dans un nouveau codespace GitHub et dans mon propre environnement de développement, et cela génère toujours les mêmes erreurs.
En lisant l’intégralité du journal (ou tout ce qui rentre dans l’historique du terminal), tous les répertoires sur lesquels il y a une erreur sont /node_modules/.pnpm. En testant et en exécutant discourse_theme contre un autre TC qui n’a pas encore été mis à jour pour utiliser pnpm au lieu de yarn, je ne vois aucune erreur, donc je suis presque certain à 100 % que le problème vient de la surveillance de .pnpm.
D’après Symlinked `node_modules` structure | pnpm, la structure normale de node_modules est préservée en déplaçant tout le code réel dans /node_modules/.pnpm et les autres répertoires dans /node_modules/ ne sont que des liens symboliques vers .pnpm. Ignorer .pnpm évite donc l’erreur « le répertoire est déjà surveillé ! ».
J’ai un peu joué avec le gem discourse_theme et j’ai ajouté listener.ignore /node_modules\\/\\.pnpm/ au watcher.rb, et cela semble fonctionner correctement sans aucun message d’erreur. Il a même détecté une nouvelle installation de package pnpm.
Ce PR appliquera la règle d’ignorance et supprimera les avertissements. Merci d’avoir créé le sujet et mené l’enquête @Alteras - ces avertissements me dérangeaient aussi !