2015-11-14 42 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']); ' '!'字符使观察者忽略这个文件。 –