gulp的任务的执行是异步的。 
所以,当我写完一系列的任务,准备一股脑地执行。

  1. #
  2. gulp.task('prod', ['clean', 'compass', 'image', 'style', 'html', 'ftp']);
  1. [10:22:54] Starting 'clean'...
  2. [10:22:54] Starting 'compass'...
  3. [10:22:54] Starting 'imagemin'...
  4. [10:22:54] Starting 'style'...
  5. [10:22:54] Starting 'html'...
  6. [10:22:54] Starting 'ftp'...
  7. [10:22:54] Finished 'style' after 88 ms
  8. [10:22:54] Finished 'html' after 86 ms
  9. [10:22:54] Finished 'clean' after 255 ms
  10. [10:22:54] Finished 'ftp' after 549 ms
  11. [10:22:55] Finished 'compass' after 1.5 s
  12. [10:22:56] gulp-imagemin: Minified 15 images (saved 337.01 kB - 30.8%)
  13. [10:22:56] Finished 'imagemin' after 2.46 s
  14. [10:22:56] Starting 'prod'...
  15. [10:22:56] Finished 'prod' after 14 μs

这不是我想要的/(ㄒoㄒ)/~~。任务完全错乱了。ftp上并没有看到我要的文件,因为其他任务还没执行完ftp任务就已经执行了。

我想要的是:('clean', 'compass', [image', 'style', 'html'],'ftp'),圆括号里面串行,中括号里面并行。可以给每个任务写依赖,但是好麻烦,而且有时候多个依赖,依赖与依赖之间依赖。算了。用插件。

  1. var runSequence = require('gulp-run-sequence');
  2. gulp.task('prod', function(cb) {
  3. runSequence('clean', 'compass', ['image', 'style', 'html'], 'ftp', cb);
  4. });
  1. [15:20:32] Starting 'prod'...
  2. [15:20:32] Starting 'clean'...
  3. [15:20:32] Finished 'clean' after 23 ms
  4. [15:20:32] Starting 'compass'...
  5. [15:20:33] Finished 'compass' after 1.21 s
  6. [15:20:33] Starting 'image'...
  7. [15:20:33] Starting 'style'...
  8. [15:20:33] Starting 'html'...
  9. [15:20:33] Finished 'style' after 49 ms
  10. [15:20:33] Finished 'html' after 55 ms
  11. [15:20:36] gulp-imagemin: Minified 15 images (saved 337.01 kB - 30.8%)
  12. [15:20:36] Finished 'image' after 2.26 s
  13. [15:20:36] Starting 'ftp'...
  14. [15:20:36] Finished 'ftp' after 82 ms
  15. [15:20:36] Finished 'prod' after 3.58 s

【2015/7/13 update: gulp-run-sequrence插件https://www.npmjs.com/package/gulp-run-sequence 已弃用了,可以用gulp-sequence代替https://github.com/teambition/gulp-sequence 】

解决。

也可以用gulp 4.0, 虽然还没正式发布,但是试用了一下,超好。

首先我们要卸了之前装的3.x先,然后重装4.0

  1. # 卸载全局的 gulp
  2. $ npm uninstall gulp -g
  3. # 安装全局的 gulp 4.0
  4. $ npm install "gulpjs/gulp-cli#4.0" -g
  5. $ npm install "gulpjs/gulp#4.0" -g
  6. # 到项目目录里删掉本地的 gulp
  7. $ npm rm gulp --save-dev
  8. # 安装本地的 gulp 4.0
  9. $ npm install "gulpjs/gulp#4.0" --save-dev

然后。就可以这样写我们的任务了

  1. #
  2. gulp.task('prod', gulp.series('clean', 'compass', gulp.parallel('image', 'style', 'html'), 'ftp'));

series里的任务是顺序执行的,parallel里的任务是同时执行的。

执行gulp prod看一下效果

  1. [15:36:53] Starting 'prod'...
  2. [15:36:53] Starting 'clean'...
  3. [15:36:54] Finished 'clean' after 24 ms
  4. [15:36:54] Starting 'compass'...
  5. [15:36:55] Finished 'compass' after 1.28 s
  6. [15:36:55] Starting 'parallel'...
  7. [15:36:55] Starting 'image'...
  8. [15:36:55] Starting 'style'...
  9. [15:36:55] Starting 'html'...
  10. [15:36:55] Finished 'style' after 67 ms
  11. [15:36:55] Finished 'html' after 67 ms
  12. [15:36:57] gulp-imagemin: Minified 15 images (saved 337.01 kB - 30.8%)
  13. [15:36:57] Finished 'image' after 2.25 s
  14. [15:36:57] Finished 'parallel' after 2.25 s
  15. [15:36:57] Starting 'ftp'...
  16. [15:36:57] Finished 'ftp' after 63 ms
  17. [15:36:57] Finished 'prod' after 3.62 s

关于4.0: https://github.com/gulpjs/gulp/issues/803

gulp顺序执行任务的更多相关文章

  1. js的并行加载以及顺序执行

    重新温习了下这段内容,发现各个浏览器的兼容性真的是搞大了头,处理起来很是麻烦. 现在现总结下并行加载多个js的方法: 1,对于动态createElement('script')的方式,对所有浏览器都是 ...

  2. 【原创】cs+html+js+css模式(七): 顺序执行与并发执行问题,IIS7及其以上版本的抛错问题解决

          在进行开发的过程中,针对于这种模式,我们继承的IRequiresSessionState,这种对于我们的同一个IIS的执行中是顺序执行即一个ajax请求处理完成后,才能执行下一个ajax, ...

  3. testng xml中按顺序执行java类

    如红字部份,将安顺序执行4个类 <?xml version="1.0" encoding="UTF-8"?><suite name=" ...

  4. js的并行加载与顺序执行

    javaScript文件(下面简称脚本文件)需要被HTML文件引用才能在浏览器中运行.在HTML文件中可以通过不同的方式来引用脚本文件,我们需要关注的是,这些方式的具体实现和这些方式可能会带来的性能问 ...

  5. testng.xml顺序执行多个case配置

    testng.xml顺序执行多个case配置 项目结构如图:

  6. 顺序执行到来的消息 actor

    在某项目里,有个 actor 需要做一些持久化的操作,这些操作耗时比较久,理应使用异步的代码来写,但是需求又强调每次只能做一个持久化操作,后来的请求应该等待.一个显然的做法是阻塞式的写,这样就能比较简 ...

  7. 多命令顺序执行、管道符 ; && || |

    多命令顺序执行:

  8. C#之使用AutoResetEvent实现线程的顺序执行

    前几天一朋友问我如何实现线程的顺序执行,说真的,虽然看过CLR这本书,也把线程部分拜读了两遍,但是这个问题出来之后还是没有一个思路.今天在搜索资料的时候无意中再次看到AutoResetEvent这个东 ...

  9. reduce + Promise 顺序执行代码

    本文地址: http://www.cnblogs.com/jasonxuli/p/4398742.html 下午的太阳晒得昏昏沉沉,和上周五一样迷糊,看一段代码半天没看明白,刚才不知不觉眯了几分钟,醒 ...

随机推荐

  1. React基础语法学习

    React主要有如下3个特点: 作为UI(Just the UI) 虚拟DOM(Virtual DOM):这是亮点 是React最重要的一个特性 放进内存 最小更新的视图,差异部分更新 diff算法 ...

  2. samba 报错

    [root@GitLab data_nfs]# smbclient //localhost/public WARNING: The security=share option is deprecate ...

  3. 个推+DCLOUD,推送消息和透传消息

    DCLOUD方案中集成了个推方案,最好是用个推来做推送相关的东西 消息分2类: 1.推送消息,这种一般会出现在手机的最上面的通知栏,用户是肯定会知道的 2.透传消息,这种一般就是一个Alert提示框, ...

  4. 重温WCF之发送和接收SOAP头(三)

    SOAP头可以理解为一种附加信息,就是附加到消息正文的内容. 既然消息头是附加信息,那有啥用呢?你可别说,有时候还真有不少用处.举个例子,WCF的身份验证是不是很麻烦?还要颁发什么证书的(当然不是荣誉 ...

  5. catch that cow (bfs 搜索的实际应用,和图的邻接表的bfs遍历基本上一样)

    Catch That Cow Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 38263   Accepted: 11891 ...

  6. 【131202】SQL

    SELECT TOP 2 * FROM Persons SELECT *FROM PersonsWHERE ROWNUM <= 5   SELECT * FROM Persons WHERE C ...

  7. sqlplus使用(一)

    一,sqlplus 环境变量 sqlplus的环境变量(来自SQL*Plus® User's Guide and Reference Release 11.2) Parameter or Variab ...

  8. Unreal Engine4 学习笔记2 动画蒙太奇

    动画蒙太奇出现的位置是在动画蓝图的动画图表和事件图表中,如下图 事件图表,可以看出在主线执行的结尾,如果is Punching 为true,则会执行一个我们自定义的Punch Event,用来播放动画 ...

  9. nodejs2

    jade@1.11.0 严格注意缩进 extends layout block content h1= title p Welcome to #{title} - var a='abc'; p his ...

  10. js 横幅播放

    js 横幅播放 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www ...