我的 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'));
});
这很好,只是它不允许我独立于 jscs
运行 jshint
任务(如果我愿意的话)。
因此我想知道这方面的最佳实践是什么?我当时想我可以将事情分解成不同的功能,然后将事情编排在一起,但这似乎不是正确的方法。
最佳答案
我见过并使用的解决方案是:
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))
}
如果您只想执行一个,您可以只从其中一个函数返回流。
关于javascript - 优化 Gulp 任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24461065/