VSCode で Samba 上の JavaScript/TypeScript プロジェクトの初期化がめっちゃ遅かった (Windows)

さらに追記

数日様子を見ておそらく治ったのでコレというやつを。

WindowsNFS クライアントを有効にしていると、たとえ何もマウントしていなくても現象が起こりやすくなるようで、「Windows の機能の有効化または無効化」から「NFS 用サービス」をオフにしたら、いまのところ快適になっています。オンにしたままでもたまに調子が良いときがあるのが原因究明に手間取った。

追記

下記の記述内容はまったくの大嘘な可能性があります。 少なくとも TSC_WATCHFILE はなんの影響も及ぼしていないようです。

いろいろ調査中ですが、「これかも」っていうのは見つけたのでしばらく様子を見てまた記事にします。

TL;DR

環境変数 TSC_WATCHFILEUseFsEvents PriorityPollingInterval にする。

以下本文

WindowsVSCode で、Samba 上の JavaScript/TypeScript プロジェクトを開くと、「JS/TS 言語機能を初期化しています」が数分間出続け、その間 IntelliSense が効かない。

昔(半年前とか)は大丈夫だったので、TypeScript のバージョンをいろいろすげ替えながら試してみたところ、2.9 から怪しくなったようだ。 (2.9 の時点で、初期化時にメッセージは表示されないが、IntelliSense が数分間働かなかった)

tsserver のログを見てみると、Watch がどうのこうの、というところで1分くらい待たされている。

どうも TypeScript 2.9 で Watch の仕様が変わったらしく、各ファイルの親ディレクトリを監視し、CPU 使用率を下げるという修正が入ったようだ。 だが、これが Windows のネットワークディレクトリ上だとうまく動かないように見えた。

そんなわけで、TypeScript の Watch の挙動を変更するには、環境変数で指定するようなので、Windows のシステムのプロパティの環境変数から値を指定したところ、早くなった。めでたしめでたし。