したいこと
Nodeでファイルを監視しておき、変更があったらある処理を行う
fs.watchをラッパーしているchokidarを使用して監視する
chokidar.watch('./src', {ignored: /(^|[\/\\])\../}).on('all', (event, path) => {
handleChange();
});
Dockerで動作させると・・・
% docker-compose up watch (git)-[master]
Starting watch_1 ... done
Attaching to watch_1
watch_1 exited with code 0
%
Exitしてしまう。
解決策
Gulpでも使用されているgazeというモジュールを使うと解決します。
参考: https://stackoverflow.com/questions/42473561/nodejs-fs-watch-is-not-reacting-to-changes-inside-a-docker-container
gaze(['./src/**'], (err, watcher) => {
if (err) throw err;
watcher.on('all', (event, file) => {
console.log(event, file);
handleChange();
});
});
% docker-compose up watch (git)-[master]
Starting watch_1 ... done
Attaching to watch_1
watch_1 | changed /app/src/components/schemas/UserInfo.yml