gulp中是否可能有条件依赖性?

9

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

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

所以,如果指定了 clean,则 build 应该等待它,否则开始执行。

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

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

然而,这违反了第二点。
如果我执行
gulp.task('clean');
gulp.task('build');

这违反了第1点规定。

使用gulp能实现这个吗?

2个回答

14

你不能使用相同的命令来运行两个gulp任务,就像你想要进行依赖管理一样。

无论如何,你可以向build任务传递一个参数,使用一个小的三元操作符,在运行之前等待clean任务完成。

所以大概是这样的:

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

这样,您可以正常启动您的构建,只需使用

gulp build

当你想使用 clean 来调用它时:

gulp build --clean

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


0

看起来你可以使用Gulp-If

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接