Глотайте вывод глотка, если файлов слишком много - PullRequest
0 голосов
/ 24 января 2019

Рассмотрим следующий файл 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 не будет, хотя я конечно же удостоверился, что в моем коде есть проблемы.Эта проблема может быть воспроизведена путем добавления файлов javascript из папки src вручную без использования подстановочных знаков.После определенного количества файлов (я, к сожалению, забыл сосчитать), ошибки больше не будут отображаться.Это зависит не от того, какие файлы я добавляю, просто от числа.

По какой-то причине это поведение можно «исправить», добавив закомментированную строку, которая выводит отладочную информацию, поэтому я предполагаю, что моей ошибке нужно что-то делатьсо мной непонимание, как глоток работает внутри.ESLint также отлично работает при внешнем вызове.Любые идеи, что проблемы могут быть или шаги, чтобы сузить это?

1 Ответ

0 голосов
/ 24 января 2019

Мне удалось решить мою проблему, хотя я не уверен на 100%, в чем проблема. В соответствии с описанием пакета gulp-eslint вы должны вернуть результат конвейеров. Таким образом, правильный файл 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 будет правильно получать обещание (или что-то в этом роде) и ждет, пока оно не будет завершено.

Кто-нибудь может подтвердить это предположение?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...