2016-10-04 8 views
1

私はgulpfile.jsを終了しようとしていますが、 "gulp watch"に問題があります。ウォッチャーを実行するように設定すると、変更が検出され、割り当てられたタスクが実行されますが、一度だけ実行されます。ファイルの次回の変更では、タスクはもう起動しません。なぜか分かりませんが、私のウォッチャーは一度しか働いていません。Gulpウォッチは1回だけ実行されます

ウォッチャーは、トリガーされたタスクが完了したことを認識していないと思います。それとも、多分それは同じgulpfileに定義されている他のタスクある「deletarMainMin」、「agruparJS」、「agruparCSS」

var 
    gulp = require('gulp'), 
    plugins = require('gulp-load-plugins')({ 
    DEBUG: true 
    }); 
plugins.runSequence = require('run-sequence'); 

gulp.task('watch',function(){ 
    gulp.watch('public/**/*.+(css|js)',['buildEspecifico']); 
}); 

gulp.task('buildEspecifico',function(callback){ 
    return plugins.runSequence(
    ['deletarMainMin'], 
    ['agruparJS','agruparCSS'] 
); 
}); 

...遅延ローディングに対処または実行シーケンスをプラグイン私が使用しているために何か。

ありがとうございます!

乾杯、

Fabio。

答えて

2

ウォッチャーは、トリガーされたタスクが完了したことを認識していないと思います。

はい、それはまさにそれです。 buildEspecificoタスクでは、callbackを受け入れます。これは、callbackを呼び出さない限り、gulpはあなたのbuildEspecificoタスクが終了したとはみなさないということを意味します。

callbackを起動しないため、buildEspecificoタスクは実行後に実際には終了しません。また、あなたのbuildEspecificoタスクが技術的にまだgulpを実行しているため、ファイルが変更されたときにタスクを再開しません。

溶液は、callbackからrunSequenceに合格します。シーケンス内のすべてのタスクが終了すると、callbackが呼び出されます。

gulp.task('buildEspecifico',function(callback){ 
    return plugins.runSequence(
    ['deletarMainMin'], 
    ['agruparJS','agruparCSS'], 
    callback 
); 
}); 

また、あなたもちょうど完全にコールバックを残すことができます:

gulp.task('buildEspecifico',function(){ 
    return plugins.runSequence(
    ['deletarMainMin'], 
    ['agruparJS','agruparCSS'] 
); 
}); 

明らかにあなた自身が終了しagruparCSS、必ずタスクdeletarMainMinagruparJSことを確認する必要があり、そうcallbackを呼び出したり、除外のいずれかそれらの仕事でも。

+0

こんにちは@Sven!助けてくれてありがとう。タスクを順番に正しく実行する必要があるため、そのコールバックを削除できません。私はシーケンスにコールバックを追加しようとし、何が起こるかを見てみましょう。数分でスレッドを更新します。 – FTM

+0

ちょっと@スヴェン、それはうまくいかなかった。何が起こったのかは、私が変更を加えた後、タスクが無限ループで動作するようになったことです。ウォッチャーが '' buildEspecifico''を複数回呼び出しているように。 – FTM

+0

コールバックを削除しようとしたときも同じことが起こりました。ウォッチャーは仕事を止まらずに続けました。 – FTM

関連する問題