Help us understand the problem. What is going on with this article?

Chokidarでglobパターンを使ってハマったこと

More than 1 year has passed since last update.

Chokidarはnode.jsのfs.watch, fs.watchFile, FSEventsをラッパーしたものです。ファイルやフォルダ監視をする際に、使いやすくて便利です。

Electronアプリを開発中に、chokidarを使う場面があり、ちょっとハマったところがあったので記録を残しておきます。

最初はこんな感じでchokidarを使っていました。環境はWindowsです。

const watchPath = 'C:\\user\\workspace\\download\\2019';
const watcher = chokidar.watch(watchPath, {ignoreInitial: true});
watcher.on('add', path => {
  /* 処理 */
});

上記の例ではwatchPathで指定したフォルダに対して、問題なく監視が行えていました。

次に、監視対象はglobパターンでも指定できるので、特定のファイルだけ監視ができるように変更しました。watchPathを以下のようにしました。

const watchPath = 'C:\\user\\workspace\\download\\2019\\*.json';

このようにしたところ、ファイル監視がうまく働きませんでした。

原因としては、バックスラッシュは特殊文字をエスケープするためにglobで予約されているため、バックスラッシュパスとglobパターンを組み合わせることはできないということでした。

以下のようにすれば問題なく動作しました。

const watchPath = 'C:/user/workspace/download/2019/*.json';

globパターンを使うときにはスラッシュパスを使いましょう。

参考URL

On windows, cannot watch files with some glob patterns #714

grinpeaceman
好きなものは、プログラミングとゲームとスターウォーズ!!
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away