Quando si esegue Discourse Theme CLI in una repository di componenti tematici con pnpm node_modules installati, il comando discourse_theme watch . restituirà errori relativi alle directory node_modules/.pnpm già monitorate. A un’analisi superficiale, ciò è dovuto al fatto che i pacchetti sono collegati simbolicamente.
Ho testato questo in un nuovo GitHub Codespace utilizzando il componente tematico mermaid ufficiale, utilizzando discourse_theme v2.1.3.
Estratto dei log di errore
** ERRORE: la directory è già monitorata! **
Directory: /workspaces/discourse-mermaid-theme-component/node_modules/.pnpm/ember-template-recast@6.1.5/node_modules/@glimmer/reference
è già monitorata tramite: /workspaces/discourse-mermaid-theme-component/node_modules/.pnpm/@glimmer+reference@0.84.3/node_modules/@glimmer/reference
MAGGIORI INFORMAZIONI: https://github.com/guard/listen/blob/master/README.md
** ERRORE: la directory è già monitorata! **
Directory: /workspaces/discourse-mermaid-theme-component/node_modules/.pnpm/@humanwhocodes+retry@0.3.1/node_modules/@humanwhocodes/retry
è già monitorata tramite: /workspaces/discourse-mermaid-theme-component/node_modules/.pnpm/@humanwhocodes+retry@0.3.1/node_modules/@humanwhocodes/retry
MAGGIORI INFORMAZIONI: https://github.com/guard/listen/blob/master/README.md
Sospetto che abbia a che fare con discourse_theme che monitora l’intera directory senza alcuna esclusione per node_modules/.pnpm o node_modules in generale.
Non è un problema grave poiché discourse_theme watch sembra funzionare bene dopo gli errori, ma non vedo il messaggio "Watching for changes..." dopo gli errori che dovrebbe provenire da discourse_theme/lib/discourse_theme/watcher.rb at main · discourse/discourse_theme · GitHub, quindi potrebbe causare un po’ di confusione. Inoltre, non è piacevole passare da npm/yarn a pnpm per poi vedere la CLI visualizzare una serie di errori.
Lo uso dalla directory TC stessa, dato che di solito sviluppo/testo il tema contro la mia istanza di sviluppo locale, una copia di sviluppo del forum non sulla mia macchina o il sito Theme Creator (la cui chiave API non sembra funzionare ultimamente). Cerco di evitare di confondermi su quale ambiente sto utilizzando.
Ho clonato git il TC di mermaid nella stessa codespace di un’installazione fresca di discourse codespace e ho provato a eseguire discourse_theme watch dalla directory discourse invece. Dà gli stessi errori.
Certamente è arbitrario, ma è un po’ ridicolo dover eseguire discourse_theme da un clone locale di discourse quando l’istanza di discourse in fase di test non è l’istanza locale.
Comunque, ho fatto come hai suggerito, sia in un nuovo codespace di GitHub, sia nel mio ambiente di sviluppo, e continua a generare gli stessi errori.
Leggendo tutto il log (o tutto quello che entra nella cronologia del terminale), tutte le directory su cui genera errori sono /node_modules/.pnpm. Testando ed eseguendo discourse_theme contro un altro TC che non è ancora stato aggiornato per utilizzare pnpm invece di yarn, non vedo errori, quindi sono quasi sicuro al 100% che il problema sia con l’osservazione di .pnpm.
Da Symlinked `node_modules` structure | pnpm, sembra che la normale struttura di node_modules sia preservata spostando tutto il codice effettivo in /node_modules/.pnpm e le altre directory in /node_modules/ siano solo symlink a .pnpm. Quindi ignorare .pnpm evita l’errore “la directory è già in fase di osservazione!”.
Ho giocato un po’ con la gemma discourse_theme e ho aggiunto listener.ignore /node_modules\\/\\.pnpm/ a watcher.rb, e sembra funzionare bene senza messaggi di errore. Ha persino rilevato una nuova installazione di pacchetti pnpm.
Questa PR applicherà la regola di ignorare e silenzierà gli avvisi. Grazie per aver creato l’argomento e per le indagini @Alteras - anche questi avvisi mi stavano infastidendo!