在尝试使用gulp-watch
的任务之后,我一直试图弄清楚如何触发依赖任务。我想我在这里做坏事。所以,我想要做的是转换整个项目(+观察更改),在完成之后我想要触发依赖于此的捆绑任务。由于转换的任务包括观察,我不能把它作为依赖任务,但我需要一种方法来知道整个转换已完成,进行初始捆绑和每次更改我想再次进行捆绑
怎么做?
这就是转换任务的样子:
gulp.task('babel', () => {
return gulp.src(babelSrc)
.pipe(watch(babelSrc, () => console.log('watch'))
.pipe(babel({...}))
.pipe(gulp.dest('build'));
});
传递给watch的回调将在每次编译文件时控制日志watch
,只有在完成整个项目的初始化后才能触发捆绑任务。
答案 0 :(得分:0)
我想做的是转换整个项目[...]并在完成之后我想触发捆绑任务
现在这样做是不可能的。当您.pipe()
gulp-watch
插件时,它会阻止流发出'end'
和'finish'
个事件。因此,无法知道最初的babel
编译何时完成。
您需要将初始编辑与手表分开。
这样你就可以监听'end'
事件并从那里触发你的依赖任务。
gulp.task('dependend-task', () => {
...
});
function babelStream(stream) {
return stream
.pipe(babel({...}))
.pipe(gulp.dest('build'))
.on('end', () => gulp.start('dependend-task'));
}
gulp.task('babel', () => {
watch(babelSrc, {ignoreIntial:true, read:false}, function(file) {
return babelStream(gulp.src(file.path));
});
return babelStream(gulp.src(babelSrc));
});