如何告诉 gulp.watch 等到必要的任务在 运行 新循环之前完成?
How to tell gulp.watch to wait until necessary tasks will not be finished before running new cycle?
我对 gulp.watch
有疑问。
TLDR:
如何告诉 gulp.watch
等到必要的任务在 运行 新周期之前没有完成?
原因:
我有三个任务:clean
、build
和 watch
。
任务 clean
删除目录,任务 build
在同一目录中生成文件(clean
是 build
的依赖项)。
目录上的任务 watch
运行s gulp.watch
然后它 运行s build
(即 运行s clean
)。
但有时 watch
任务 运行s new build
before previous build
is finished and an error occurs: build
continues write to directory and 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
});
});
我对 gulp.watch
有疑问。
TLDR:
如何告诉 gulp.watch
等到必要的任务在 运行 新周期之前没有完成?
原因:
我有三个任务:clean
、build
和 watch
。
任务 clean
删除目录,任务 build
在同一目录中生成文件(clean
是 build
的依赖项)。
目录上的任务 watch
运行s gulp.watch
然后它 运行s build
(即 运行s clean
)。
但有时 watch
任务 运行s new build
before previous build
is finished and an error occurs: build
continues write to directory and 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
});
});