如果文件太多,则吞咽吞没的输出

时间:2019-01-24 10:14:46

标签: javascript gulp gulp-eslint

考虑以下gulp文件:

var gulp = require('gulp');
var eslint = require('gulp-eslint');
var debug = require('gulp-debug');

gulp.task('lint', function (done) {
    gulp
        .src([
            'src/**/*.js',
            '!src/public/javascripts/external/*'
        ])
        .pipe(eslint())
        .pipe(eslint.format())
        //.pipe(debug({title: 'Linting:'}));
    done();
});

如果我的src文件夹中的文件太多(我不是在谈论过多的文件。该文件少于20个),则gulp lint仅输出

Using gulpfile [my/path/to/gulpfile]
Starting 'lint'...
Finished 'lint' after 55ms

即使我确定代码中肯定有问题,ESLint也不会发出任何警告。可以通过手动从我的src文件夹中添加javascript文件而不使用通配符来重现此问题。在一定数量的文件(我很遗憾忘了算)之后,错误将不再显示。这不取决于我添加的文件,而取决于数量。

由于某种原因,可以通过添加输出调试信息的注释行来“修复”此行为,因此我假设我的错误与我误解了gulp在内部如何工作有关。 ESLint在外部调用时也可以正常工作。任何想法可能是什么问题,或采取措施缩小范围?

1 个答案:

答案 0 :(得分:0)

尽管我不能100%地确定问题出在哪里,但我仍然能够解决问题。根据{{​​3}},您应该返回管道的结果。因此正确的gulpfile如下所示:

var gulp = require('gulp');
var eslint = require('gulp-eslint');
var debug = require('gulp-debug');

gulp.task('lint', function () {
    return gulp // note the return here
        .src([
            'src/**/*.js',
            '!src/public/javascripts/external/*'
        ])
        .pipe(eslint())
        .pipe(eslint.format());
    // no call to 'done()' is needed
});

我的猜测是该插件异步运行,我在实际完成之前通过调用done()结束了该任务。打印调试信息是在异步任务完成后发生的,或者它花了足够的时间来完成。现在,gulp将正确接收到一个承诺(或类似的承诺)并等待其完成。

任何人都可以确认这个猜测吗?