如何告诉gulp.watch等到必要的任务没有完成,然后再运行新的循环



我对gulp.watch有问题。

TLDR:如何告诉gulp.watch等到必要的任务无法完成后再运行新周期?

原因:我有三个任务:cleanbuildwatch。任务clean删除目录,任务build在同一目录中生成文件(cleanbuild的依赖项)。任务 watch 在目录上运行gulp.watch,然后运行build(运行clean )。

但有时watch任务会在上一个build完成之前运行新的build并发生错误:build继续写入目录,clean尝试删除目录(当然,ENOTEMPTY发生错误)。

当我运行gulp watch命令时,会发生此问题。

我的Gulpfile.js

var gulp = require('gulp');
var ts = require('gulp-typescript');
var tslint = require('gulp-tslint');
var rename = require('gulp-rename');
var del = require('del');
var tsProject = ts.createProject('tsconfig.json');
var tsSources = ['app/**/*.ts', 'app/**/*.tsx'];
gulp.task('clean', function() {
  return del(['built']);
});
gulp.task('build', ['clean'], function() {
  return gulp.src(tsSources)
    .pipe(ts(tsProject)).js
    .pipe(rename({extname: '.js'}))
    .pipe(gulp.dest('built'));
});
gulp.task('tslint', ['clean'], function() {
  return gulp.src(tsSources)
    .pipe(tslint())
    .pipe(tslint.report('msbuild', {
      emitError: false,
      summarizeFailureOutput: false
    }));
});
gulp.task('watch', ['build', 'tslint'], function() {
  return gulp.watch(tsProject.config.filesGlob, ['build', 'tslint']);
});
gulp.task('default', ['build', 'tslint']);

要清洁gulp,请使用以下代码:-

gulp.task('clean', function() {
    del.sync([ 
       path.join(__dirname, builtPath, '**/*.js'),
    ], {
       force: true
    });
});

相关内容

最新更新