如何从3迁移到gulp v4?

时间:2019-03-18 18:49:04

标签: npm gulp

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

对文件进行任何更改后,我都想运行一个名为“ html”的任务。它在gulp的早期版本中有效,因为现在它会产生以下错误。 gulp.start不是函数

在新版本的gulp中,我找不到任何方法来实现这一目标。我发现我需要将其更改为功能,但是似乎找不到要更改的内容以及更改方式?

其余代码如下

var gulp = require("gulp"),
    watch = require('gulp-watch');

gulp.task('default', function(done){
  console.log("You created the default task");
  done();``
});

gulp.task('html', function(done){
  console.log('modifying the html');
  done();
});

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

1 个答案:

答案 0 :(得分:1)

您无需将任务转换为命名函数-尽管这被认为是最佳做法,而且操作简便。

要解决您的观看任务,请尝试:

gulp.watch('watch', function(done) {
 watch('./app/index.html', gulp.series('html'));
 done();  
});

要更改为命名函数,请执行以下操作:

function html(done) {
  gulp.src(….)
    console.log('modifying the html');
    done();
};

function watch(done) {
 watch('./app/index.html', gulp.series('html'));
 done();  
});

exports.html= gulp.series(html);
exports.default = gulp.series(watch);

请注意,现在watch任务不是作为字符串调用的,即'watch',而是watch

exports.html中,gulp.series并不是严格需要的,因为那里只有一个任务,所以exports.html= html;就足够了。

仅当您希望直接调用任务时才需要导出任务(例如,从命令行gulp html开始)。如果说html任务将仅由其他任务在内部调用,则无需export