我有这个任务:
var path = require('path');
var gulp = require('gulp');
var conf = require('./conf');
var svgSprite = require("gulp-svg-sprites");
var clean = require('gulp-clean');
gulp.task('sprite-make', function () {
//first task
gulp.src([path.join(conf.paths.src, '/assets/svg/*.svg'), '!' + path.join(conf.paths.src, '/assets/svg/sprite.svg')])
.pipe(svgSprite({
preview: false,
svgPath: path.join(conf.paths.src, '/assets/svg/sprite.svg'),
cssFile: ('_sprite.scss')
}))
.pipe(gulp.dest(path.join(conf.paths.src, '/app/styles')));
//second task
gulp.src(path.join(conf.paths.src, '/app/styles/svg/**/*'))
.pipe(gulp.dest(path.join(conf.paths.src, '/assets/svg')));
//third task
gulp.src(path.join(conf.paths.src, '/app/styles/svg'), {read: false})
.pipe(clean());
});
我想要的是一个接一个地执行这个任务(创建精灵 - >将它复制到新目的地 - >删除src)。
目前正在运行异步的任务,如果我尝试pipe(gulp.src(...)
,我收到以下错误:Unhandled stream error in pipe
答案 0 :(得分:0)
在文档中很好地定义了:https://github.com/gulpjs/gulp/blob/master/docs/API.md
注意:默认情况下,任务以最大并发性运行 - 例如它 立即启动所有任务并等待一切。如果你想 创建一个系列,其中任务以特定顺序运行,您需要这样做 两件事:
在任务完成时给它一个提示告诉它,然后给它一个提示 任务取决于另一个任务的完成。对于这些例子, 让我们假设你有两个任务,即“一个”和“两个” 特别希望按此顺序运行:
在任务“one”中,您可以在任务完成时添加提示以告诉它。或 接受回电,并在完成或回复承诺时调用它 引擎应该等待分别解决或结束的流。
在任务“2”中,您添加一个提示,告诉引擎它依赖于什么 完成第一项任务。
所以这个例子看起来像这样:
var gulp = require('gulp');
// takes in a callback so the engine knows when it'll be done
gulp.task('one', function(cb) {
// do stuff -- async or otherwise
cb(err); // if err is not null and not undefined, the run will stop, and note that it failed
});
// identifies a dependent task must be complete before this one begins
gulp.task('two', ['one'], function() {
// task 'one' is done now
});
gulp.task('default', ['one', 'two']);