gulp中是否可以有条件依赖?

pgr*_*en2 9 gulp

我的构建脚本有两个要求:

  1. 当我跑步时gulp clean build,clean必须在build 开始前完成.
  2. 如果我跑gulp build,那么clean不应该跑.

所以,如果clean指定了,那么build应该等待它,否则启动.

如果我这样做,第一部分是可能的

gulp.task('clean');
gulp.task('build', ['clean']);
Run Code Online (Sandbox Code Playgroud)

但是,这违反了第2点

如果我做

gulp.task('clean');
gulp.task('build');
Run Code Online (Sandbox Code Playgroud)

这违反了第1点

吞咽这可能吗?

Bal*_*zar 13

您不能像使用所需的依赖关系管理那样使用相同的命令运行两个gulp任务.

无论如何,您可以将一个参数传递给您的build任务,该任务将允许使用一个小三元组clean在运行之前等待一个完成.

所以像这样:

gulp.task('build', (process.argv[3] === '--clean') ? ['clean'] : null, function () {
  ...
});
Run Code Online (Sandbox Code Playgroud)

这样,您可以正常启动您的构建

gulp build
Run Code Online (Sandbox Code Playgroud)

当你想用以下方式调用它时clean:

gulp build --clean
Run Code Online (Sandbox Code Playgroud)

有很多方法可以获得更好的参数处理,例如yargsgulp -util的env .但我发现我的方法很好,因为它不需要任何额外的依赖.