在完成所有文件的 gulp 任务后运行代码 [英] Run code after gulp task done with all files
问题描述
所以我一直在尝试 Gulp,看看它在速度方面与 Grunt 相比如何,我对结果印象深刻,但我有一件事我不知道如何在 Gulp 中做.
So I have been trying out Gulp to see how it compares to Grunt as far as speed and I am pretty impressed with the results but I have one thing I don't know how to do in Gulp.
所以我有这个 gulp 任务来缩小 HTML:
So I have this gulp task to minify HTML:
gulp.task('html-minify', function() {
var files = [
relativePaths.webPath + '/*.html',
relativePaths.webPath + '/components/**/*.html',
relativePaths.webPath + '/' + relativePaths.appPath + '/components/**/*.html'
];
var changedFiles = buildMetaData.getChangedFiles(files);
//TODO: needs to execute only after successful run of the task
buildMetaData.addBuildMetaDataFiles(changedFiles);
buildMetaData.writeFile();
return gulp.src(changedFiles, {
base: relativePaths.webPath
})
.pipe(filelog())
.pipe(minifyHtml({
empty: true,
quotes: true,
conditionals: true,
comments: true
}))
.pipe(gulp.dest(relativePaths.webPath + '/' + relativePaths.appPath + '/' + relativePaths.buildPath));
});
buildMetaData 对象具有我需要的自定义功能以及为什么我不能使用像 gulp-changed 这样的插件.我想弄清楚的是如何(如果可能的话)在缩小完成处理所有文件并成功运行后运行代码块.用 gulp 可以实现这样的事情吗?
The buildMetaData object has custom functionality that I need and why I can't use plugins like gulp-changed. What I am trying to figure out is how (if possible) to run a block of code after the minify is done process all files and it run successfully. Is something like this possible with gulp?
推荐答案
你可以只做一个依赖于html-minify
的任务:
You could just make a task which depends on html-minify
:
gulp.task('other-task', ['html-minify'], function() {
//stuff
});
您还可以在 html-minify
任务中监听流 end
事件:
You could also listen for the stream end
event inside the html-minify
task:
gulp.task('html-minify', function(done) {
var files = [
relativePaths.webPath + '/*.html',
relativePaths.webPath + '/components/**/*.html',
relativePaths.webPath + '/' + relativePaths.appPath + '/components/**/*.html'
];
var changedFiles = buildMetaData.getChangedFiles(files);
//TODO: needs to execute only after successful run of the task
buildMetaData.addBuildMetaDataFiles(changedFiles);
buildMetaData.writeFile();
var stream = gulp.src(changedFiles, {
base: relativePaths.webPath
})
.pipe(filelog())
.pipe(minifyHtml({
empty: true,
quotes: true,
conditionals: true,
comments: true
}))
.pipe(gulp.dest(relativePaths.webPath + '/' + relativePaths.appPath + '/' + relativePaths.buildPath));
stream.on('end', function() {
//run some code here
done();
});
stream.on('error', function(err) {
done(err);
});
});
这篇关于在完成所有文件的 gulp 任务后运行代码的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!