有人可以解释这个gulpfile中的`clean`依赖吗?

时间:2017-01-23 01:48:47

标签: angularjs gulp del

尝试学习https://github.com/jhades/angularjs-gulp-example/blob/master/gulpfile.js,我注意到,对于任务build,存在依赖关系clean。但是,对于大多数其他定义,clean也被指定为依赖项!因此,如果我运行build,它将运行clean,但那么build-cssbuild-template-cache哪些都具有clean依赖关系......等等...还为每个依赖项运行clean?所以基本上运行一个命令gulp build不止一次运行clean ...消除其他依赖项的输出....或者第一次显式满足时运行clean其他依赖项的依赖关系并阻止clean再次运行!

任何指针都将受到赞赏。

请注意

我不是在问什么是正确的清洁技术!我特别询问我发布的链接......以及IT如何处理clean任务。

1 个答案:

答案 0 :(得分:1)

依赖关系

gulp文件中的

Dependencies只是说它必须至少运行一次。例如这段代码:

var gulp = require('gulp');

gulp.task('main', ['b', 'a'], function() {
  return gulp;
});

gulp.task('a', ['b'], function() {
  return gulp;
});

gulp.task('b', ['a'], function() {
  return gulp;
});

将像这样运行:

  • main
  • a
  • b

  • main
  • a
  • b
  • a
  • b

无限重复。

依赖关系执行顺序

但是,它可以很容易地按照mainb,然后a的顺序运行。这是因为gulp中的synchronous tasks。依赖项必须异步运行在任务之前,但它们一起或同步运行,这answer解释了同步和异步之间的区别。

为避免这种情况,您可以在Gulp 4

中使用此代码
gulp.task('main', function() {
  gulp.series('a', 'b');
});

这将始终按mainab的顺序运行 但在此之下,您需要使用run-sequence包。这是一个例子:

var runSequence = require('run-sequence');
gulp.task('main', function() {
  runSequence('a', 'b');
})