gpt4 book ai didi

javascript - 如何告诉 gulp.watch 等到必要的任务尚未完成后再运行新周期?

转载 作者:行者123 更新时间:2023-11-27 22:55:38 25 4
gpt4 key购买 nike

我对 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
});
});

关于javascript - 如何告诉 gulp.watch 等到必要的任务尚未完成后再运行新周期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37650653/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com