在 gulp.series() 中使用 del
Using del in gulp.series()
我尝试在 gulp 4
开始任务之前清理文件夹
var gulp = require('gulp');
var del = require('del');
gulp.task('clean', function() {
del.sync('folder/*');
});
gulp.task('foo', gulp.series('clean', 'something'));
它不起作用,因为 'clean'
任务必须 return 一些流。我找到了解决方法:
gulp.task('clean', function() {
del.sync('folder/*');
var emptyStream = gulp.src([]).pipe(gulp.dest('/'));
return emptyStream;
});
,但还是希望能找到更好的解决办法。
您也可以将回调传递给 clean 任务以获取返回的流
var del = require('del');
gulp.task('clean', function(cb) {
del(['output'], cb);
});
看看here
gulp 允许三个选项来管理异步性。首先,如果函数完成(returns nothing/undefined,或一个简单的值)gulp 认为任务完成并继续。但是,如果您的任务是一个异步任务(在节点中也是如此),那么您...
- Return一个流。
return gulp.src(...).pipe(gulp.dest(...));
注意 return 值是一个流,因为 gulp.src 和 .pipe return 流。
- Return一个Promise.
- 使用回调。如果你在函数的参数中放置一个变量,那么 gulp 将期望回调被调用并等待它发生。给回调一个值作为参数被认为是失败,没有值调用它被认为是成功。
在 del 的情况下,它不会执行前两个操作,但会接收一个回调,其处理方式与上述方案 3 中的处理方式相同。
gulp.task('clean', function(done) {
del(['output'], done);
});
例子
下面是使用流手动调用回调的示例:
gulp.task('foo', function(done) {
gulp.src('input')
.pipe(gulp.dest('output'))
.on('end', function() {
done();
})
.on('error', function(err) {
done(err);
});
});
由于流是如此普遍 returning 将为您完成上述操作。 (注意 done
已被删除,因此 gulp 不会期望它被调用)。
gulp.task('foo', function() {
return gulp.src('input')
.pipe(gulp.dest('output'));
});
并不是所有的东西都可以成为一个流,回调可能很难管理,所以你可以 return 一个承诺:
gulp.task('foo', function() {
return new Promise(function(resolve) {
setTimeout(resolve, 5000);
});
});
直接来自 gulp 4.0 samples,只需 return del 承诺:
function clean() {
// You can use multiple globbing patterns as you would with `gulp.src`,
// for example if you are using del 2.0 or above, return its promise
return del([ 'assets' ]);
}
我尝试在 gulp 4
开始任务之前清理文件夹var gulp = require('gulp');
var del = require('del');
gulp.task('clean', function() {
del.sync('folder/*');
});
gulp.task('foo', gulp.series('clean', 'something'));
它不起作用,因为 'clean'
任务必须 return 一些流。我找到了解决方法:
gulp.task('clean', function() {
del.sync('folder/*');
var emptyStream = gulp.src([]).pipe(gulp.dest('/'));
return emptyStream;
});
,但还是希望能找到更好的解决办法。
您也可以将回调传递给 clean 任务以获取返回的流
var del = require('del');
gulp.task('clean', function(cb) {
del(['output'], cb);
});
看看here
gulp 允许三个选项来管理异步性。首先,如果函数完成(returns nothing/undefined,或一个简单的值)gulp 认为任务完成并继续。但是,如果您的任务是一个异步任务(在节点中也是如此),那么您...
- Return一个流。
return gulp.src(...).pipe(gulp.dest(...));
注意 return 值是一个流,因为 gulp.src 和 .pipe return 流。 - Return一个Promise.
- 使用回调。如果你在函数的参数中放置一个变量,那么 gulp 将期望回调被调用并等待它发生。给回调一个值作为参数被认为是失败,没有值调用它被认为是成功。
在 del 的情况下,它不会执行前两个操作,但会接收一个回调,其处理方式与上述方案 3 中的处理方式相同。
gulp.task('clean', function(done) {
del(['output'], done);
});
例子
下面是使用流手动调用回调的示例:
gulp.task('foo', function(done) {
gulp.src('input')
.pipe(gulp.dest('output'))
.on('end', function() {
done();
})
.on('error', function(err) {
done(err);
});
});
由于流是如此普遍 returning 将为您完成上述操作。 (注意 done
已被删除,因此 gulp 不会期望它被调用)。
gulp.task('foo', function() {
return gulp.src('input')
.pipe(gulp.dest('output'));
});
并不是所有的东西都可以成为一个流,回调可能很难管理,所以你可以 return 一个承诺:
gulp.task('foo', function() {
return new Promise(function(resolve) {
setTimeout(resolve, 5000);
});
});
直接来自 gulp 4.0 samples,只需 return del 承诺:
function clean() { // You can use multiple globbing patterns as you would with `gulp.src`, // for example if you are using del 2.0 or above, return its promise return del([ 'assets' ]); }