Discourse Theme CLIのエラーがpnpmインストールのnode_modulesとシンボリックリンクのために発生

pnpm を使用して node_modules をインストールしたテーマコンポーネントリポジトリで Discourse Theme CLI を実行すると、discourse_theme watch . コマンドは node_modules/.pnpm ディレクトリが既に監視されているというエラーを返します。一見したところ、これはパッケージがシンボリックリンクされていることが原因のようです。

公式のマーメイド TC を使用し、最新の GitHub Codespace でこれをテストしました。discourse_theme v2.1.3 を使用しています。

エラーログの抜粋
** 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

discourse_themenode_modules/.pnpm または node_modules 全般の無視設定なしにディレクトリ全体を監視していることが原因だと推測されます。

これは discourse_theme watch がエラーの後も問題なく動作するため、重大な問題ではありません。しかし、エラーの後に表示されるはずの \"Watching for changes...\" メッセージが表示されないため、混乱を招く可能性があります。また、npm/yarn から pnpm に移行したにもかかわらず、CLI が画面に多数のエラーを表示するのは、あまり良い体験ではありません。

「いいね!」 3

通常、discourse ディレクトリからこれを実行しますが、テーマコードフォルダを監視します。たとえば、次のようになります。

discourse_theme watch ~code/my-new-theme

同じフォルダから実行する理由は何ですか?

それが問題の原因になっているのではないでしょうか? :thinking:

TC ディレクトリ内から使用しています。これは、ローカルの開発インスタンス、ローカルマシン上にないフォーラムの開発コピー、または最近 API キー ジェネレーターが機能していないように見えるテーマ クリエイター サイトに対して、テーマの開発/テストを行っていることが多いためです。どの環境で作業しているか混乱するのを避けようとしています。

mermaid TC を、新しい discourse codespace インストールと同じ codespace に git clone し、代わりに discourse ディレクトリから discourse_theme watch を実行しようとしました。同じエラーが発生します。

それは問題ありませんが、別のターミナルタブから実行するのを妨げるものはありません…そして、ディスコースディレクトリからですか?

確かにそれは任意ですが、テスト中のdiscourseインスタンスがローカルインスタンスではない場合に、discourse_themeをdiscourseのローカルクローンから実行する必要があるのは少しばかげています。

とにかく、提案されたとおりに、新しいgithub codespaceと独自の開発環境の両方で実行しましたが、同じエラーが発生します。


すべてのログ(またはターミナル履歴に収まるすべてのログ)を読みましたが、エラーが発生しているすべてのディレクトリは /node_modules/.pnpm です。pnpmではなくyarnを使用するように更新されていない別のTCに対してdiscourse_themeをテストおよび実行したところ、エラーは発生しませんでした。そのため、問題は.pnpmを監視していることであるとほぼ100%確信しています。

Symlinked `node_modules` structure | pnpm によると、実際のコードはすべて /node_modules/.pnpm に移動され、/node_modules/ の残りのディレクトリは単なる.pnpmへのシンボリックリンクであるため、node_modulesの通常の構造が維持されているようです。したがって、.pnpmを無視すると、「ディレクトリはすでに監視されています!」というエラーが回避されます。

discourse_theme gemを少し操作し、watcher.rblistener.ignore /node_modules\\/\\.pnpm/を追加したところ、エラーメッセージなしで正常に機能するようです。新しいpnpmパッケージのインストールも検出しました。

「いいね!」 3

このPRは、無視ルールを適用し、警告を抑制します。トピックの作成と調査をしてくれた@Alterasさん、ありがとうございます。私もこれらの警告にはうんざりしていました!:sweat_smile:

「いいね!」 4

このトピックは、最後の返信から30日後に自動的にクローズされました。新しい返信は許可されていません。