我正在尝试在我的项目中第一次设置jshint linter。我正在使用gulp-jshint。以下配置工作得很好我的每个文件都有错误数。 问题:是否可以计算项目中的所有错误?
ie:如果fileA有4个错误,fileB有2个错误,fileC有1个错误 你最终得到的东西"你的项目共有7个错误"
这是我的gulp配置
gulp.task('lint', function() {
return gulp.src(paths.scripts)
.pipe(jshint('.jshintrc'))
.pipe(jshint.reporter('jshint-stylish'));
});
谢谢!
答案 0 :(得分:4)
编辑:由于我发布了这个答案,我已经清理并大大扩展了我在下面编写的代码,并将其作为自己的软件包发布在npm:jshint-stylish-summary
。
以下是输出的屏幕截图:
jshint-stylish
似乎不支持最终摘要。你可能想找一个能做你想做的不同的记者。 (然而,快速perusal of mine没有产生任何有用的东西。)
如果您想继续使用jshint-stylish
,您仍然可以选择添加a custom reporter。这是我实施的一个应该让你开始:
var map = require('map-stream');
var jshintTotalReporter = function() {
var total = { warnings: 0, errors: 0 };
total.files = { all: 0, success: 0, warning: 0, error: 0 };
return {
collect: map(function(file, cb) {
var codes = { W: 0, E: 0 };
(file.jshint.results||[]).forEach(function(result) {
codes[result.error.code[0]]++;
});
total.warnings += codes['W'];
total.errors += codes['E'];
total.files.all++;
total.files.success += (codes['W'] + codes['E'] > 0) ? 0 : 1;
total.files.warning += (codes['W'] > 0) ? 1 : 0;
total.files.error += (codes['E'] > 0) ? 1 : 0;
cb();
}),
report: function() {
console.log(total.files.all + ' files checked');
console.log(total.files.success + ' files without problems');
console.log(total.files.warning + ' files with warnings (' +
total.warnings + ' warnings total)');
console.log(total.files.error + ' files with errors (' +
total.errors + ' errors total)');
}
};
};
gulp.task('lint', function() {
var jshintTotals = jshintTotalReporter();
return gulp.src(paths.scripts)
.pipe(jshint('.jshintrc'))
.pipe(jshint.reporter('jshint-stylish'))
.pipe(jshintTotals.collect)
.on('end', jshintTotals.report);
});
(不要忘记运行npm install --save-dev map-stream
或者这不起作用。)
输出相当简陋,但应该包含可能感兴趣的所有信息。例如:
9 files checked
3 files without problems
6 files with warnings (13 warnings total)
4 files with errors (7 errors total)
如果您想了解更多内容,可以使用chalk
为输出添加一些颜色,并使用log-symbols
添加jshint-stylish
使用的漂亮小图标。