Gulp使用相互依赖的多个任务进行原位更改

时间:2016-01-28 19:08:23

标签: gulp

我使用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任务。

0 个答案:

没有答案