Gulp 插件 —— gulp-watch

gulp-watch 是一个使用了超级快的chokidar(一个node的fs.watch\fs.watchFile\fsevents的简洁封装)同时能够发送一个 vinyl 对象的文件监听模块。

API

watch(glob, [options, callback])

  • 创建一个监听器来监听模式匹配到的文件,glob可以是一个字符串也可以是一个字符串数组。
  • 返回一个经过这个监听器的流,这个流会发送一个 vinyl 文件对象,而这个文件又会触发文件系统的一个事件。

Callback function(vinyl)

当文件系统的事件被触发时,这个回调方法将被调用。所有被pipe进来的文件都会被分组,然后被传递给事件流。

  • vinyl — 是一个 vinyl 对象,它对应着一个能够触发事件的文件。可以添加额外的 event 字段来指定具体的事件类型. 可能的事件:
    • add - 创建新文件或者新添加到监听器
    • change - 文件改变
    • unlink - 文件被删除

options

这个对象将直接传给 chokidar options, gulp.src的options也可以使用。如果你不希望watch来读取文件的内容,可以在options中添加 read: false

  • options.ignoreInitial 类型: Boolean 默认值: true

    决定是否监听最初的文件添加事件

  • options.events 类型: Array 默认值: ['add', 'change', 'unlink']

    配置需要gulp-watch插件监听的事件。

  • options.base 类型: String 默认值: undefined

    为模式匹配配置根路径。

  • options.name 类型: String 默认值: undefined

    监听器的名字,如果指定了,你可以得到更多的可读输入

  • options.verbose 类型: Boolean 默认值: false

    这个选项可以启用详细输入

  • options.readDelay 类型: Number 默认值: 10

    读文件之前等待 readDelay 的时长

  • options.read 类型: Boolean 默认值: true

    将此属性设置为 false,就不会读取文件,并且返回的file对象中的contents属性为 null。当你的管道流程并不关心文件内容时(如 clean任务),这将是一个很有用的可选项,它也可以你在回调中使用gulp.src 来读取文件而没有使用传入的file参数时,避免重复读取文件。

Method

返回的Stream对象有几个好用的实例方法:

  • add(path / paths)
  • unwatch(path / paths)
  • close()

Events

chokidar 中定义的所有事件。

  • add,
  • change,
  • unlink,
  • addDir,
  • unlinkDir,
  • error,
  • ready,
  • raw

使用示例

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

gulp.task('stream', function () {
    // Endless stream mode 
    return watch('css/**/*.css', { ignoreInitial: false })
        .pipe(gulp.dest('build'));
});

gulp.task('callback', function () {
    // Callback mode, useful if any plugin in the pipeline depends on the `end`/`flush` event 
    return watch('css/**/*.css', function () {
        gulp.src('css/**/*.css')
            .pipe(gulp.dest('build'));
    });
});

特别提醒:在 gulpjs 4.0 发布之前, 你可以使用 gulp-plumber 来防止在错误时中止进程。

results matching ""

    No results matching ""