2017年2月23日个人博文-迁移到segmentfault项目中,不经意间代码会这样写。gulp.task('clean',function(){gulp.src(['./dist','./rev']).pipe(clean())});gulp.task("build",["clean"],function(){runSequence("htmlMove",['imageMin','reCollector','btMove','views'],'over')})然后这可能会导致问题,因为这个任务:clean不是正确的异步执行方式,所以会出现——说明clean任务已经完成,接下来会执行htmMove、imageMin等一系列任务,但是.pipe(clean())是stillexecuting,这会导致为了在删除目录的同时执行其他一系列任务,会因为找不到某些指定的目录而报错。那么什么是正确的异步执行呢?API文档中有详细的解释,这里就不做详细介绍了。http://www.gulpjs.com.cn/docs...强调了其中最重要的一点:异步执行的正确方式:使用回调,或者返回一个promise或者stream。如果你想创建一个序列化的任务队列,并按照特定的顺序执行,你需要做两件事:给出一个提示,告诉它什么时候任务已经执行完毕,并且给出一个提示,告诉一个任务依赖于另一个任务的完成任务。然后对刚才的gulp流程有如下改进:gulp.task('clean',function(){returngulp.src(['./dist','./rev']).pipe(clean())});gulp.task("build",["clean"],function(){runSequence("htmlMove",['imageMin','reCollector','btMove','views'],'over')})添加return,如果不添加return,task和里面的gulpflow是异步执行的,所以会出现finished先编译的情况。
