2014-11-04 58 views
0

我对使用Gulp完成任务的顺序有些困惑。请允许我解释一下。吞咽处理任务的顺序是什么?

在gulpfile.js中,我有我所需的所有依赖关系,后面跟着一组任务。

每个子任务的基本模板是

gulp.task('compress:customName', function() { 
    return gulp.src(['app/folder/file.js', 'app/folder/file.js']) 
     .pipe(gp_concat('app.customName.min.js')) 
     .pipe(gp_uglify()) 
     .pipe(gulp.dest(distDir)); 
}); 

然后,我有一个规则,他们都

gulp.task('compress:all', [ 
    'compress:customName1', 
    'compress:customName2', 
    'etc...' 
], function() {}); 

后来有多个主任务运行一个任务(只使用压缩:所有这例如)

gulp.task('master', ['compress:all'], function() { 
    return gulp.src('dist/*.js') 
     .pipe(notify("COMPRESSION COMPLETE")); 
}); 

好的......这是基本的设置......现在来讨论这些任务出现的顺序。 o根据命令行结果完成。

[11:06:44] Using gulpfile C:\PATH\TO\PROJECT\gulpfile.js 
[11:06:44] Starting 'compress:customName1'... 
[11:06:44] Starting 'compress:customName2'... 
[11:06:44] Starting 'compress:customName3'... 
[11:06:44] Starting 'compress:customName4'... 
[11:06:44] Starting 'compress:customName5'... 
[11:06:44] Starting 'compress:customName6'... 
[11:06:44] Starting 'compress:customName7'... 
[11:06:44] Finished 'compress:customName1' after 108 ms 
[11:06:44] Finished 'compress:customName6' after 93 ms 
[11:06:44] Finished 'compress:customName5' after 132 ms 
[11:06:44] Finished 'compress:customName4' after 139 ms 
[11:06:44] Finished 'compress:customName3' after 233 ms 
[11:06:44] Finished 'compress:customName2' after 245 ms 
[11:06:44] Finished 'compress:customName7' after 381 ms 
[11:06:44] Starting 'compress:all'... 
[11:06:44] Finished 'compress:all' after 6.64 µs 
[11:06:44] Starting 'master'... 
[11:06:44] gulp-notify: [SO EXAMPLE : Gulp Builder] COMPRESSION COMPLETE 
[11:06:44] Finished 'master' after 40 ms 

'master'如何成为'compress:all'之后的最后一个启动和启动任务?

为什么完成的任务以这种随机顺序显示?

为什么说'master'只有40毫秒才能完成,它应该等待它调用的所有子任务,然后再考虑自己的完成?

+0

我没有看到你的榜样'compress'任务。你的意思是'主人'? – Heikki 2014-11-04 17:45:44

+0

是...更新... thx – beauXjames 2014-11-04 17:47:30

回答

0

'master'如何成为'compress:all'后面的最后一个启动和启动任务?

相关性在实际任务开始之前运行。 'compress:all'是'master'的依赖关系。

为什么Finished任务以这样的随机顺序显示?

依赖关系并行运行,即完成一个依赖关系只取决于完成一个所需的时间。

为什么说'master'只有40毫秒才完成,它应该等待它调用的所有子任务,然后再考虑自己完成?

任务的完成时间中不包括依存关系。


“DEPS - 任务的数组被执行并完成之前,你的任务将会运行。”

https://github.com/gulpjs/gulp/blob/master/docs/API.md#deps

+0

依赖项是按照它们添加到任务的顺序运行的吗? – beauXjames 2014-11-04 18:03:20

+0

不,他们都在同一时间开始〜并行运行。 – Heikki 2014-11-04 18:04:56

+0

好的...我明白了。我在同一页面上阅读,可以返回承诺而不是流。你有什么建议使用它来获得对一系列操作的更多控制吗? – beauXjames 2014-11-04 19:41:43