Gulp 在两次吞咽任务之间通过一条小溪?
我还没有找到任何关于一个人是如何吞咽的文档,甚至不确定他是否应该这样做:Gulp 在两次吞咽任务之间通过一条小溪?,gulp,Gulp,我还没有找到任何关于一个人是如何吞咽的文档,甚至不确定他是否应该这样做: var fileStream; gulp.task('lint', ['glob'], function () { var jshint = require('gulp-jshint'); fileStream.pipe(jshint()) .pipe(jshint.reporter('default')); }); gulp.task('glob', function ()
var fileStream;
gulp.task('lint', ['glob'], function () {
var jshint = require('gulp-jshint');
fileStream.pipe(jshint())
.pipe(jshint.reporter('default'));
});
gulp.task('glob', function () {
fileStream = gulp.src([
'./js/**/*.js',
'!**/node_modules/**'
]);
});
这是做这种事情的最好方法吗?是否有更好的方法将1个任务返回/创建的流“传递”到其他任务中,以便对于此类任务,我们不会在仍然使“lint”和“glob”任务不同的情况下复制globbing。这是不是更适合大口喝呢
谢谢 gulp构建中非常常见的模式
- 模式被收集到单个PATH变量中
- 每个任务都以一个“src”插件开始(通常是
),以一个“sink”插件结束(gulp.src
,或者在您的示例中是一个报告器)gulp.dest
var paths = {
scripts:[
'./js/**/*.js',
'!**/node_modules/**'
],
css: './css/**'
};
gulp.task('lint', function () {
var jshint = require('gulp-jshint');
var stream = gulp.src(paths.scripts)
.pipe(jshint())
.pipe(jshint.reporter('default'));
return stream;
});
gulp.task('cssmin', function () {
var stream = gulp.src(paths.css)
.pipe(cssmin())
.pipe(gulp.dest("..."));
return stream;
});
为什么不在任务之间共享流呢?
Gulp的任务编排器(很快Gulp4就会有一个新的编排器)正在处理任务依赖关系及其执行,所以你不想共享一个可以被多个消费者使用的流 有点让我希望流可以有一个类似于“承诺”的方面,流在特定时间点的状态可以在消费者之间传递,新的流状态可以被任意链接。@user2217522,根据当前的
gulp
docs,这最终是可能的(虽然它在示例中引用了Q
库,而不是原生的Promise
s),但它没有提到将Promise作为返回值传递给下一个任务。但是,您可以始终在顶层声明它,并在每个任务中解决/拒绝它。