Gulp watch导致无限循环

5
当我运行 gulp js 并更改 JS 文件时,它被调用时会进入无限循环。
为什么从 gulp.watch 调用 build 没有返回呢?
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'])
});

//


“not returning” - 它不应该返回,它应该“观察”变化。 - Simon H
@SimonH 确实,那句话措辞不当。问题在于该函数进入了无限循环,在单个更改后不断调用 _bundle。 - wootscootinboogie
1个回答

5
您正在对所有.js文件(*.js)指定监视器(watch),并在更改其中任何一个时触发构建(build)。 构建又调用_bundle,这将导致对main.js的修改。 由于main.js匹配watch中的*.js,因此会再次触发build,现在您有了一个循环,确保无限循环。

那就是问题所在。谢谢! - wootscootinboogie
是的,我有同样的问题,你如何排除捆绑文件不被监视? - SSH This
1
我解决了 :) 我使用了这个(如果有人像我一样从谷歌来):gulp.watch(['webroot/js/**/*.js', "!webroot/js/bundle.js"], ['default']); ! 字符使观察程序忽略此文件。 - SSH This

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接