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

时间:2014-12-12 20:22:28

标签: gulp

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

  1. 当我运行gulp clean build时,clean必须在build之前完成 开始。
  2. 如果我运行gulp build,则clean不应该运行。
  3. 因此,如果指定了clean,那么build应该等待它,否则就开始。

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

    gulp.task('clean');
    gulp.task('build', ['clean']);
    

    然而,这违反了第2点

    如果我这样做

    gulp.task('clean');
    gulp.task('build');
    

    违反了第1点

    gulp可以实现吗?

2 个答案:

答案 0 :(得分:13)

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

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

这样的事情:

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

这样,您可以使用

正常启动构建
gulp build

当您想使用clean

进行调用时
gulp build --clean

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

答案 1 :(得分:0)

看起来您可以使用Gulp-If

gulp.task('build', function() {
  gulp.src('*.*')
    .pipe(gulpif(condition, clean()))
    .pipe(gulp.dest('./dist'));
});