javascript - 如果文件太多,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 在外部调用时也能正常工作。任何想法可能是什么问题或缩小范围的步骤?
解决方案
尽管我不是 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 将正确地收到一个承诺(或类似的东西)并等待它完成。
谁能证实这个猜测?
推荐阅读
- python - 模块“pytextrank”没有属性“parse_doc”
- javascript - 如何使用 javascript、html 和/或 css 获取两个元素并将它们集中在一起?
- javascript - FTPS 服务器给出错误:超时(控制套接字)
- eclipse - 谷歌应用引擎项目未在调试模式下运行
- r - 点击 Shiny 后渲染数据表
- python - 用 nditer 替换 pytorch 张量的 numpy 数组
- r - 如何创建一个包含变量及其相应测量尺度的表格?
- android - 我们应该缩小 Cordova 源文件吗?
- django - 在 GeoDjango 中使用 PostGIS 时出现入口点错误
- regex - 日志文件的有效grep