这是我的配置:
var gulp = require('gulp'),
// load plugins
$ = require('gulp-load-plugins')();
gulp.task('scripts', function () {
return gulp.src([
'app/scripts/**/*.js',
'gulpfile.js',
'protractor.conf.js',
'test/**/*.js'
])
.pipe($.jshint())
.pipe($.jshint.reporter('jshint-junit-reporter'))
.pipe($.jshint.reporter('jshint-stylish'))
.pipe($.size());
});
jshint-junit-reporter必须输出到文件,我已经尝试过了:
.pipe($.jshint.reporter('jshint-junit-reporter').pipe(gulp.dest('output.xml')))
和
.pipe($.jshint.reporter('jshint-junit-reporter')).pipe(gulp.dest('output.xml'))
但它只是将gulp.src重定向到名为:output.xml
的目录答案 0 :(得分:0)
我找到了解决此限制的方法。
确保npm install --save jshint jshint-junit-reporter gulp-shell
您还要确保您有一个.jshintrc
文件,您可以在其中运行gulp。
然后在gulpfile.js
var shell = require('gulp-shell')
gulp.task('lint-tofile', shell.task(
["node_modules/.bin/jshint www/js/ --reporter=node_modules/jshint-junit-reporter/reporter.js > test/results/lint.xml"],
{ cwd: __dirname, ignoreErrors: true }
));
您需要更改" www / js"和" test / results / lint.xml"位。
此外,我还使用新的outputFile选项创建了pull request to the jshint-junit-reporter维护者。
答案 1 :(得分:0)
我认为一个自定义的js提示记者就是你所追求的。尝试根据您的需求调整以下内容:
var fs = require('fs'); // Native Node package
var mapStream = require('map-stream'); // Install via npm
gulp.task('js:lint', function(){
var jsHintReporter = function (taskName) {
var toWrite = [];
var stream = mapStream(function (file, cb) {
var noErrors = true;
if (!file.jshint.success) {
var message = 'JSLINT fail in ' + file.path;
noErrors = false;
console.log(message);
file.jshint.results.forEach(function (err) {
var filePathDirs = err.file.split('/');
var filePath = filePathDirs.slice(
filePathDirs.length - 2,
filePathDirs.length
).join('/');
if (err.error) {
var errorMessage = '' + filePath + ': line ' + err.error.line + ' | col ' + err.error.character + ' | ' + err.error.reason;
toWrite.push(errorMessage);
console.log(errorMessage);
}
});
}
if (noErrors) {
var message = taskName + ': 0 issues!';
toWrite.push(message);
console.log(message);
}
fs.writeFile('jsLintOutput.txt', toWrite.join('\n'))
cb(null, file);
});
return stream;
};
var reporter = new jsHintReporter('js:lint');
var stream = gulp.src('resources/js/**/*.js')
.pipe(gp.jshint())
.pipe(reporter);
return stream;
});