监视文件
watch()
API 使用文件系统监视器将 globs 连接到任务。它监视与 globs 匹配的文件变化,并在发生变化时执行任务。如果任务没有发出异步完成信号,它将永远不会被第二次运行。
此 API 基于最常用的默认值提供了内置的延迟和队列功能。
const { watch, series } = require('gulp');
function clean(cb) {
// 内容省略
cb();
}
function javascript(cb) {
// 内容省略
cb();
}
function css(cb) {
// 内容省略
cb();
}
exports.default = function() {
// 你可以使用单个任务
watch('src/*.css', css);
// 或者使用组合任务
watch('src/*.js', series(clean, javascript));
};
警告:避免同步任务
监视器的任务不能像注册到任务系统中的任务那样是同步的。如果你传递一个同步任务,将无法确定其完成时间,任务也不会再次运行 - 系统会假设 它仍在运行。
没有提供错误或警告消息,因为文件监视器会保持你的 Node 进程运行。由于进程不会退出,无法确定任务是否完成或者只是花费了非常非常长的时间来运行。
监视的事件
默认情况下,监视器会在文件被创建、更改或删除时执行任务。
如果你需要使用不同的事件,可以在调用 watch()
时使用 events
选项。可用的事件有 'add'
、'addDir'
、'change'
、'unlink'
、'unlinkDir'
、'ready'
、'error'
。此外,'all'
也可用,它表示除 'ready'
和 'error'
之外的所有事件。
const { watch } = require('gulp');
exports.default = function() {
// 所有事件都将被监视
watch('src/*.js', { events: 'all' }, function(cb) {
// 内容省略
cb();
});
};