2015-11-14 73 views
2

當我運行一飲而盡JS和做出改變的js文件它進入一個無限循環,當它被調用咕嘟咕嘟表會無限循環

爲什麼打電話從gulp.watch建立不永遠歸還?

var gulp = require("gulp"); 
var browserify = require("browserify"); 
var reactify = require("reactify"); 
var source = require("vinyl-source-stream"); 
var watch = require("gulp-watch"); 

function _bundle(config){ 
    return browserify({ 
     entries: ['./main.js'], 
     transform: [reactify] 
    }).bundle(); 
} 
gulp.task('default',function(){ 
    "use strict"; 
    _bundle() 
    .pipe(source('build.js')) 
    .pipe(gulp.dest('./')); 
}); 
gulp.task('build',function(){ 
    "use strict"; 
    _bundle() 
     .pipe(source('build.js')) 
     .pipe(gulp.dest('./')); 

}); 



gulp.task('js', function() { 

    //gulp.watch(['./*.js'], ['default']); 
    gulp.watch(['./*.js'],['build']) 
}); 

//

+0

'不返回' - 它不應該,它應該是'看'的變化 –

+0

@SimonH真,這是措辭不佳。問題是函數進入無限循環,在一次更改後不斷調用_bundle。 – wootscootinboogie

回答

3

您指定的所有.js文件(*.jswatch,並觸發build時,它們中的任何改變。 構建依次調用_bundle,這是會導致修改main.js 由於main.js比賽watch*.jsbuild將再次被觸發,現在你必須確保無限循環週期。

+0

這是問題所在。謝謝! – wootscootinboogie

+0

是的,我有同樣的問題,你如何忽略捆綁文件被監視? –

+0

我想通了:)我用這個(如果有人像谷歌一樣來自我): 'gulp.watch(['webroot/js/**/*。js','!webroot/js/bundle。 js「],['default']); ' '!'字符使觀察者忽略這個文件。 –