考虑以下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在外部调用时也可以正常工作。任何想法可能是什么问题,或采取措施缩小范围?
答案 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将正确接收到一个承诺(或类似的承诺)并等待其完成。
任何人都可以确认这个猜测吗?