#
监视文件watch()
API 使用文件系统观察器将glob连接到任务。它监视与 glob 匹配的文件的更改,并在发生更改时执行任务。如果任务未发出异步完成信号,则永远不会再次运行该任务。
此 API 基于最常用的默认值提供内置延迟和排队。
#
警告:避免同步观察者的任务不能是同步的,就像注册到任务系统中的任务一样。如果您传递一个同步任务,则无法确定完成,并且任务将不会再次运行 - 它被认为仍在运行。
没有提供错误或警告消息,因为文件观察器使您的 Node 进程保持运行。由于进程不会退出,因此无法确定任务是否已完成或只是花费了很长时间来运行。
#
观察的事件默认情况下,无论何时创建、更改或删除文件,观察者都会执行任务。如果您需要使用不同的事件,可以在调用 watch()
时使用 events
选项。可用的事件有 'add'
、'addDir'
、'change'
、'unlink'
、'unlinkDir'
、'ready'
、'error'
。此外,'all'
也可用,它表示除 'ready'
和 'error'
之外的所有事件。
#
初始执行调用 watch()
时,任务不会被执行,而是等待第一个文件更改。
要在第一个文件更改前执行任务,将 ignoreInitial
选项设置为 false
。
#
排队每个 watch()
保证其当前运行的任务不会再次并发执行。当监视器任务正在运行时,如果文件发生更改,另一个执行将排队,以便在任务完成后运行。一次只能排队一个运行。
要禁用排队,将 queue
选项设置为 false
。
#
延迟在文件更改后,监视器任务在 200 毫秒延迟时间过去之前不会运行。这是为了避免在一次更改很多文件时(例如查找和替换)过早启动任务。
要调整延迟时间,将 delay
选项设置为一个正整数。
#
使用观察器实例你可能不会使用此功能,但如果你需要完全控制已更改的文件(例如访问路径或元数据),请使用从 watch()
返回的 chokidar 实例。
注意:返回的 chokidar 实例没有排队、延迟或异步完成功能。
#
可选依赖Gulp 有一个称为 fsevents 的可选依赖,它是一个 Mac 特定的文件观察器。如果你看到 fsevents 的安装警告 - “npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents” - 这不是问题。如果跳过 fsevents 安装,将使用后备观察器,并且 gulpfile 中发生的任何错误都与此警告无关。