Javascript Gulp Watch Concat有时会忽略一些JS文件

Javascript Gulp Watch Concat有时会忽略一些JS文件,javascript,gulp,gulp-watch,Javascript,Gulp,Gulp Watch,我有一个Gulp concat watch任务设置,用于concat一些JS文件: var sources = [ 'public/js/scriptA.js', 'public/js/scriptB.js', 'public/js/scriptC.js', 'public/js/scriptD.js', 'public/js/scriptE.js' ]; gulp.task('main.js', function(){ return gulp.src(source

我有一个Gulp concat watch任务设置,用于concat一些JS文件:

var sources = [
  'public/js/scriptA.js',
  'public/js/scriptB.js',
  'public/js/scriptC.js',
  'public/js/scriptD.js',
  'public/js/scriptE.js'
];

gulp.task('main.js', function(){
    return gulp.src(sources)
        .pipe(concat('main.js'))
        .pipe(gulp.dest('./public/js'));
});

gulp.task('watch', function() {
    gulp.watch(sources, ['main.js']);
});
我想这很正常。每当任何脚本发生更改时,都会通过按该顺序连接脚本来创建
main.js
。它99%的时间都能正常工作

但有时,可能是随机的,concat只是省略了一个或多个文件。例如,我将编辑
scriptB.js
,保存它,然后查看
main.js
,它只包含
scriptA
scriptB
scriptE
。它完全忽略了C和D,有时可能只是C,有时可能是D,有时可能是A,只是随机的。我没有对它遗漏的任何文件做任何处理。我在我的编辑器中打开了它,但它没有改变,只是坐在那里。Gulp只是因为一些随机的原因而决定把它排除在外

我解决这个问题的方法是打开任何遗漏的脚本,在随机行或其他东西的末尾添加一个空格,然后保存它,然后像我预期的那样连接
main.js
。文件没有问题。只是不得不重新保存它

就任何人所知,这是一个突出的bug吗?我在任何地方都找不到关于这个bug的任何信息。我可以做些什么来调试或记录这个问题,以找出如何重新创建它

我注意到的一件事是,假设我正在编辑
scriptC
并保存它,然后注意到
scriptD
丢失了。如果我返回到
scriptC
并再次保存它,
scriptD
仍然没有连接到中。我必须打开
scriptD
并保存它,以强制将其包含回
main.js
。因此,一旦我看到问题弹出窗口,我通常可以用这种方式重新创建它


这通常只发生在20次保存中的1次。

您可以使用gulp include插件来解决此问题。有了这个插件,您可以通过在main.js文件中使用特殊注释来包括/需要您的js文件

main.js:

//=require 'public/js/scriptA.js' 
//=require 'public/js/scriptB.js' 
//=require 'public/js/scriptC.js' 
//=require 'public/js/scriptD.js' 
//=require 'public/js/scriptE.js' 
gulpfile.js:

var gulp          = require("gulp"),
    include       = require("gulp-include");

gulp.task("scripts", function() { 

    gulp.src("main.js")
        .pipe(include())
            .on('error', console.log)
        .pipe(gulp.dest("./public/js"));

});

gulp.task('watch', function() {
    gulp.watch(sources, ['main.js']);
});

该插件可通过npm获得:

Your
gulp.watch
line指的是
sources.js.main
。。。我想你只是简单地使用
源代码
,但你错过了一个?是的,我在纠正。就像我说的,concat大部分时间都很好用。你找到解决这个问题的方法了吗?我们看到了同样的问题,有时可以通过更改脚本的顺序暂时“修复”。肯定是某个地方的问题。我从来没有找到解决这个问题的方法。通常我只是重新保存被遗漏的文件,然后以某种方式修复它。这是一个非常奇怪的随机问题。我不知道如何使用gulp来调试它并发现问题。您是否将此问题记录在concat github页面上?