在gulp V4中弃用gulp.start后,如何从其他gulp任务中启动gulp任务?

时间:2019-06-22 11:54:54

标签: javascript gulp gulp-watch

我需要创建名为'watch'的gulp任务,以监视index.html文件中的更改,并在index.html中进行更改时启动其他名为'html'的gulp任务。根据我正在遵循的教程,应该这样进行:

gulp.task('watch', function(){
    watch('app/index.html', function() {
        gulp.start('html');
    });
});

但是它返回了我错误消息,因为gulp v4中不推荐使用gulp.start。我尝试了使用串联和并行方法的几种解决方案,但是老实说,我根本不理解该解决方案,并且使用该解决方案没有任何结果。有人可以在我的简单示例中向我展示如何做吗?

1 个答案:

答案 0 :(得分:0)

Gulp任务现在是简单的功能。无需通过gulp.task()定义任务,只需定义函数即可:

function html(cb) {
    // Do something
    cb()
}

现在对函数html的引用可以用作任务:

function watch() {
    return gulp.watch('app/index.html', html)
}

请注意,定义为简单功能的任务被视为私有任务,无法通过gulp <task>来调用它们。为此,您需要通过导出它们使其成为公开

exports.html = html
exports.watch = watch

因此,对于您的特定用例,您将不需要seriesparallel。但是,您可以通过相同的方式将任务(函数引用)传递给它们,以创建其他任务:

exports.rebuild = gulp.series(clean, build)