gulp
のwatch
を使っていると、ファイルを変更していないのに、勝手にタスクが走り出すことがあります。
変更していないファイルを、変更されたと勘違いしたり、
変更していない同じファイルを、何回も変更されたと勘違いしたり。
一度watch
が暴走し始めると、gulpコマンドを再起動させるはめになり、面倒でした。
例
watchタスクをひとつ、適当に例として書いてみます。
gulp
// 注意 これだけでは動きません。
gulp.task('scss', function () {
gulp.watch(config.src, function (event) {
console.log('changed scss: ', event.path);
gulp.src(config.src)
.pipe(plumber())
.pipe(sass())
.pipe(gulp.dest(config.dest));
});
});
gulpが暴走すると、
永遠に変更され続けます。
changed scss: common.scss
changed scss: common.scss
changed scss: common.scss
changed scss: common.scss
changed scss: common.scss
changed scss: common.scss
changed scss: common.scss
暴走の原因はメモリ不足
私の場合、virtualBox、vagrantという環境でgulpを使用しており、
メモリが512MBがしかありませんでした。
gulpがメモリを512MB、全部使ってしまったタイミングで、暴走が始まることを確認したため、メモリを4GBに増加させたところ、暴走しなくなったので、おそらくこれが原因でした。