chokidarモジュールの使い方
- webpackでentry外のファイルをwatchして、node.jsの処理を発動させたい
- webpackのstatsじゃなくて、自作のログを表示させたい
こんな時に使える便利なモジュール「chokidar」
Node.jsにはfs.watchやfs.watchFileなど、監視してくれる機能もありますが、
chokidarの方が色々便利な機能がついているので、こちらの方をよく利用します。
使い方
公式サイトの使い方は以下の通り
npm install chokidar
const chokidar = require('chokidar');
// 実行
chokidar.watch('.').on('all', (event, path) => {
console.log(event, path);
});
これでも一応動くのですが、コマンド打つたび一番最初に↓のメッセージが毎回流れてきて結構ストレス。。。
いや、コマンド打ったあとの変更を監視して欲しいんですよ。。。!
addDir .
add main.js
addDir node_modules
add package-lock.json
add package.json
addDir src
add src/.DS_Store
addDir src/img
~~~~
というわけで、自分なりのチュートリアルとしては以下のやり方が良いと思います。
npm install chokidar -D // 自分の場合はdevDependenciesでOK
const chokidar = require('chokidar');
const watcher = chokidar.watch('.'); // 監視対象のフォルダ階層指定
watcher.on('ready', () => {
watcher.on('all', (event, path) => {
console.log(event, path);
});
});
これで、コマンド入力時は何もログが表示されず、その後の監視対象のフォルダ/ファイルに変更が発生した場合のみ、ログが出力されるようになります。
監視対象のパス指定
chokidar.watch
の第1引数として指定する
chokidar.watch('.'); // 現在の階層配下を監視
chokidar.watch('./src/'); // srcフォルダ配下を監視
// 監視階層指定をしてからそのまま起動させる場合
chokidar.watch('./src/').on('all',(event, path) => {
console.log(event, path);
});
オプション指定
chokidar.watch
の第2引数としてobject形式で指定する
chokidar.watch('.', [options]); // format
// sample
chokidar.watch('./src/', {
persistent: true,
ignored: '*.txt',
ignoreInitial: false,
followSymlinks: true,
cwd: '.',
disableGlobbing: false,
usePolling: false,
interval: 100,
binaryInterval: 300,
alwaysStat: false,
depth: 99,
awaitWriteFinish: {
stabilityThreshold: 2000,
pollInterval: 100
},
ignorePermissionErrors: false,
atomic: true // or a custom 'atomicity delay', in milliseconds (default 100)
});
name | type/default | discription |
persistent | boolean/true | 監視している最中にプロセスを続けるかどうか |
ignored | string/null | 無視するファイルやパスを定義 |
ignoreInitial | boolean/false | 未調査 |
followSymlinks | boolean/true | 未調査 |
cwd | string/null | ベースとなるディレクトリの指定 |
disableGlobbing | boolean/false | 未調査 |
usePolling | boolean/false | 未調査 |
interval | number/100 | 未調査 (usePollingがtrueの場合の設定) |
binaryInterval | number/300 | 未調査 (usePollingがtrueの場合の設定) |
alwaysStat | boolean/false | 未調査 |
depth | number/undefined | 再帰的に監視するフォルダの深さを指定 |
awaitWriteFinish | boolean/false | 未調査 |
awaitWriteFinish .stabilityThreshold |
number/2000 | 未調査 |
awaitWriteFinish .pollInterval |
number/2000 | 未調査 |
ignorePermissionErrors | boolean/false | 読み取り権限のないファイルを監視するかどうか |
atomic | boolean/true | 未調査 |
イベント
.onメソッドで指定する項目
chokidar.watch('.').on(event, callback);
name | discription |
all | 全てのイベント |
add | ファイルが追加された |
addDir | フォルダが追加された |
change | ファイルが変更された |
unlink | ファイルが削除された |
unlinkDir | フォルダが削除された |
ready | chokidarが準備出来た |
raw | 未調査 |
error | chokidarがエラーになった |
callback | event:イベントの名前 path:イベントが発生したファイル/フォルダのパス情報
|
その他の機能については公式README参照
chokidar使う方法はこちらの記事のwatch.jsなどをご参照下さい
Links
README:https://github.com/paulmillr/chokidar/blob/master/README.md
chokidar+α:https://homeworks.cloud/post-342/
ディスカッション
コメント一覧
まだ、コメントがありません