如何以特定顺序运行Gulp任务

我正在使用runsequence插件。 但似乎我做错了,所以它不工作。 我正在尝试创buildbrowserify构build并使用运行序列gulp插件在服务器上使用我的handlebars预编译模板进行连接。

在gulpfile相应的任务看起来像这样:

gulp.task("browserify", function () { gulp.src('src/js/map.js') .pipe(browserify({ insertGlobals: false, debug: false })) .pipe(gulp.dest('build')) .pipe(notify({ message: "browserify ended" })); }); gulp.task("scripts", function () { var newDir; newDir = './build/1111'; gulp.src(['./build/map.js', './build/templates/templates.js']) .pipe(concat('build.js')) .pipe(gulp.dest(newDir)) .pipe(notify({ message: "scripts build ended" })); }); gulp.task('default', function () { runSequence( 'browserify', 'scripts' ); }); 

但是在browserify任务完成之前,实际上脚本任务正在​​尝试调用。 所以我得到这个输出:

 $ gulp [10:40:26] Using gulpfile ~/projects/map2/gulpfile.js [10:40:26] Starting 'default'... [10:40:26] Starting 'browserify'... [10:40:26] Finished 'browserify' after 7.84 ms [10:40:26] Starting 'scripts'... [10:40:26] Finished 'scripts' after 4.58 ms [10:40:26] Finished 'default' after 14 ms [10:40:26] gulp-notify: [Gulp notification] templates build ended [10:40:26] gulp-notify: [Gulp notification] browserify ended 

scripts任务不会创buildbuild.js文件(注意通知插件没有“脚本构build结束”消息)。

我自己想清楚了 为了达到这个目的,应该从完成工作的任务中得到一些信号。 检查这篇文章的更多信息。 其实我select这样返回stream:

 gulp.task('browserify', function (cb) { var stream = gulp.src('src/js/clientAppControl.js') .pipe(browserify({ insertGlobals: false, debug: false })) .pipe(gulp.dest('build')) .pipe(notify({ message: 'browserify ended' })); return stream; }); 

并依赖关系开始正常工作。

类似于你添加的答案,但在我看来有点清洁,是删除return stream ,并将var stream =replace为return

 gulp.task('browserify', function (cb) { return gulp.src('src/js/clientAppControl.js') .pipe(browserify({ insertGlobals: false, debug: false })) .pipe(gulp.dest('build')) .pipe(notify({ message: 'browserify ended' })); });