gulp.watch的两种使用方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了gulp.watch的两种使用方法相关的知识,希望对你有一定的参考价值。

参考技术A gulp.watch用于监听文件变化,以触发任务。通常把gulp.watch自身也写成一个任务。

常规写法类似于 gulp.watch('*.scss', ['task-sass']); ,也就是任务列表的写法。

命令行输入 gulp watch-scss 即可。

如果想写回调,需要另行写回调函数 watcher.on('change', function(event) ) 。

回调函数会被传入一个名为 event 的对象,这个对象描述了所监控到的变动:

event.type
类型: String

发生的变动的类型:added, changed 或者 deleted。

event.path
类型: String

触发了该事件的文件的路径。

回调函数式写法如下,也就是放弃任务列表,直接写回调函数:

总结:

不需要执行任务列表,只想写一个回调的,就用watch()回调函数式写法,想执行任务列表,就用任务列表式写法。

gulp gulp-watch不起作用

我尝试下面的代码。

  var gulp = require("gulp");
  var ps = require('child_process').exec;
  var watch = require('gulp-watch');

  gulp.task('exec_file', function() {
    var command = "/mnt/c/pg/expect/folder_sync";
    ps(command , function (err, stdout, stderr) {
      console.log(stdout);
    });
  });

  gulp.task("watch", function() {
    var targets = [
      './**'
    ];
    return watch(targets, ['exec_file']);
  });

但是代码出错了。

我该怎么办?

答案

在手表内部,您必须告知Gulp要开始的任务。

替换以下行:

return watch(targets, ['exec_file']);

有了这个:

watch(targets, function(){ gulp.start('exec_file'); })

或者用这个:

watch(targets).on('change', function(){ gulp.start('exec_file')});

P.S我不确定你是否必须退货。

以上是关于gulp.watch的两种使用方法的主要内容,如果未能解决你的问题,请参考以下文章

Gulp Watch 和 Nodemon 冲突

gulp常用方法

gulp gulp-watch不起作用

Gulps gulp.watch没有触发新的或删除的文件?

防止错误破坏/崩溃 gulp watch

laravel gulp watch 不更新 sass css 文件