我使用gulp-changed-in-place
软件包仅使用已更改的文件(https://github.com/alexgorbatchev/gulp-changed-in-place)运行某些Gulp任务。我遇到了一个问题,我只想在更改的文件上运行linting和代码样式任务,以加快开发时间。
我目前的设置如下:
var gulp = require('gulp');
var changedInPlace = require('gulp-changed-in-place');
var eslint = require('gulp-eslint');
var jscs = require('gulp-jscs');
var config = {
paths: {
js: './app/**/*.js'
}
}
gulp.task('jscs', function() {
return gulp.src(config.paths.js)
.pipe(changedInPlace())
.pipe(jscs())
.pipe(jscs.reporter())
.pipe(jscs.reporter('fail'));
});
gulp.task('lint', ['jscs'], function() {
return gulp.src(config.paths.js)
.pipe(changedInPlace())
.pipe(eslint())
.pipe(eslint.format())
.pipe(eslint.failAfterError());
});
gulp.task('js', ['lint'], function() {
// do some stuff
});
gulp.task('watch', function() {
gulp.watch(config.paths.js, ['js']);
});
问题可能非常明显。 js
任务依赖于lint
任务,该任务本身依赖于jscs
任务 - 因此jscs
任务首先运行。它访问changedInPlace()
会导致缓存更新,因此来自changedInPlace()
任务的lint
调用并不认为有任何更改,也不会检查文件我期望的。
有没有人在这个问题上使用过此软件包,您对该怎么做有任何建议吗?还可以使用其他方式完成任务 - 仅对已更改的文件运行js
任务。