web-dev-qa-db-ja.com

Gulp Watchは一度だけ実行されます

私はこのGulp Watchサンプルを使用しています: https://github.com/floatdrop/gulp-watch/blob/master/docs/readme.md#starting-tasks-on-events

var gulp = require('gulp');
var watch = require('gulp-watch');
var batch = require('gulp-batch');

gulp.task('build', function () { console.log('Working!'); });

gulp.task('watch', function () {
    watch('**/*.js', batch(function () {
        gulp.start('build');
    }));
});

Windows 8マシンで実行すると、ファイルを初めて変更したときにのみ実行されます。

C:\test>gulp watch
[08:40:21] Using gulpfile C:\test\gulpfile.js
[08:40:21] Starting 'watch'...
[08:40:21] Finished 'watch' after 2.69 ms
[08:40:31] Starting 'build'...
Working!
[08:40:31] Finished 'build' after 261 µs

次回は何も起こりません。どうして?

25
dhrm

ドキュメントを注意深く読むと、次のフレーズが表示されます。

すべてのイベントで呼び出されるプレーンコールバックを渡すことができますまたはgulp-batchでラップして実行しますonce

つまり、基本的にはgulp-batch。常に監視するには、バッチ呼び出しを削除するだけです。

gulp.task('build', function (done) { 
    console.log('Working!'); 
    done();
});

gulp.task('watch', function () {
    watch('app/*.js', function () {
        gulp.start('build');
    });
});

(「完了」コールバックをbuildに追加して、完了したことをGulpに通知します)。

ところで...よくわかりませんが、gulp-watchは、ファイルを監視するだけでなく、レコードを直接返すことも目的としています。したがって、実際には組み込みのgulp.watchも同じ効果があります。

gulp.task('watch', function () {
    gulp.watch('app/**/*.js', ['build']);
});
18
ddprrt

私にとっては、タスクに「リターン」を追加することでした:

gulp.task('styles', function(){
 return gulp.src('css/styles.css')
    .pipe(autoprefixer())
    .pipe(gulp.dest('build'));
});
15
Tim Nong

私は同じ問題を抱えており、ddprrtと同じものを使用しました。違いは、絶対パスの代わりにワイルドカードを使用することでした。

私はこれを変更しました:

 gulp.task('watch', function() {
   gulp.watch('sass/shortcutcss/*.scss', ['sass'])
 });

これに:

 gulp.task('watch', function() {
   gulp.watch('sass/**/*.scss', ['sass'])
 });
7
lacostenycoder

この問題は私を週末に夢中にさせました。私はすべて試しました:

  • Done()-イベントを追加
  • ターゲットCSSの名前変更/タッチ/クリア
  • ファイルパスをより具体的にする

しかし、(この問題の理由と)解決策は非常に簡単だったので、その後は哀れに感じました。

ただ nodejsインストールを更新する 、私のものは0.12.xでした!これがうまくいかないのも不思議ではありません。

その後、監視イベントが再び機能します。時々それもまたうまくいかない。ただし、この場合は、ファイルをもう一度保存するだけで認識されます。 (おもう foundation/gulp watch高速への変更をチェックし、ファイルが新しくアップロードされたファイルに置き換えられている間)

1
Sascha