优化Gulp任务

时间:2014-06-27 21:31:46

标签: javascript gulp

我将以下任务作为gulp文件的一部分:

gulp.task('jshint', function() {
    return gulp.src(jsSrc)
        .pipe(jshint())
        .pipe(jshint.reporter('jshint-stylish'));
});

gulp.task('jscs', function() {
    return gulp.src(jsSrc)
        .pipe(jscs());
});

gulp.task('jslint', [ 'jshint', 'jscs' ]);

根据我的理解,如果我运行jslint我不会从仅从光盘读取中获益。要做到这一点,我必须重写它看起来像这样:

gulp.task('jslint', function() {
    return gulp.src(jsSrc)
        .pipe(jshint())
        .pipe(jscs())
        .pipe(jshint.reporter('jshint-stylish'));
});

这很好,但是如果我愿意的话,它不允许我独立于jshint运行jscs任务。

因此,我想知道最佳做法是什么?我在想我可以把事情分解成不同的功能并将事情协调在一起,但这似乎不是正确的方法。

1 个答案:

答案 0 :(得分:0)

我见过并使用的解决方案是:

var merge = require('merge-stream');

gulp.task('analyze', function() {
    var jshint = analyzejshint(config.js);
    var jscs = analyzejscs(config.css);

    return merge(jshint, jscs);
});

function analyzejshint(sources, overrideRcFile) {
    var jshintrcFile = overrideRcFile || './.jshintrc';
    console.log('Running JSHint');
    return gulp
        .src(config.js)
        .pipe(plug.jshint(jshintrcFile))
        .pipe(plug.jshint.reporter('jshint-stylish'));
}

function analyzejscs(sources, overrideRcFile) {
    var jscsrcFile = overrideRcFile || './.jscsrc';
    console.log('Running JSCS');
    return gulp
        .src(config.js)
        .pipe(jscs(jscsrcFile))
}

如果您只想执行一个,则可以从其中一个函数返回流。