簡體   English   中英

Gulp手表只運行一次

[英]Gulp watch runs only once

我正在嘗試完成gulpfile.js,但遇到了“ gulp watch”問題。 當我將觀察器設置為運行時,它會檢測到更改並運行分配的任務,但是只能運行一次。 文件上的下一個更改不再觸發任務。 我不知道為什么,但是我的觀察者只工作一次。

我相信觀察者並沒有意識到它觸發的任務已經完成。 或者,也許可以處理我正在使用的延遲加載或運行順序插件...

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']
  );
});

'deletarMainMin','agruparJS','agruparCSS'是在同一個gulpfile中定義的其他任務。

提前致謝!

干杯,

法比奧。

我相信觀察者並沒有意識到它觸發的任務已經完成。

是的,就是這樣。 buildEspecifico任務中,您接受callback 這意味着buildEspecifico除非您調用該callback否則不會認為您的buildEspecifico任務已經完成。

由於您不調用callback因此buildEspecifico任務一旦運行就不會真正完成。 而且由於您的buildEspecifico任務在技術上仍在運行,因此buildEspecifico不會在文件更改時再次啟動該任務。

解決方案是將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']
  );
});

顯然,您必須確保任務deletarMainMinagruparJSagruparCSS本身完成,因此也要在這些任務中調用或省略callback

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM