#
Наблюдение за файламиwatch()
API соединяет глобсы с задачами с помощью наблюдателя файловой системы. Он отслеживает изменения в файлах, которые соответствуют глобам, и выполняет задачу, когда происходит изменение. Если задача не сигнализирует о Async Completion, она никогда не будет запущена во второй раз.
Этот API обеспечивает встроенную задержку и постановку в очередь на основе наиболее часто используемых значений по умолчанию.
#
Предупреждение: избегайте синхронностиЗадача наблюдателя не может быть синхронной, как задачи, зарегистрированные в системе задач. Если вы передадите задачу синхронизации, завершение не может быть определено, и задача больше не будет запущена - предполагается, что она все еще выполняется.
Сообщение об ошибке или предупреждении отсутствует, поскольку средство отслеживания файлов поддерживает работу вашего процесса Node. Поскольку процесс не завершается, невозможно определить, выполнена ли задача или выполняется очень-очень много времени.
#
Наблюдаемые событияПо умолчанию наблюдатель выполняет задачи всякий раз, когда файл создается, изменяется или удаляется.
Если вам нужно использовать разные события, вы можете использовать опцию events
при вызове watch()
. Доступные события: 'add'
, 'addDir'
, 'change'
, 'unlink'
, 'unlinkDir'
, 'ready'
, 'error'
. Дополнительно доступно 'all'
, которое представляет все события, кроме 'ready'
и 'error'
.
#
Первоначальное выполнениеПосле вызова watch()
, задачи не будут выполняться, вместо этого они будут ждать первого изменения файла.
Чтобы выполнять задачи до первого изменения файла, установите для параметра ignoreInitial
значение false
.
#
ОчередьКаждый watch()
гарантирует, что его текущая задача не будет выполняться снова одновременно. Когда изменение файла выполняется во время выполнения задачи-наблюдателя, другое выполнение будет помещено в очередь для выполнения, когда задача завершится. Только один запуск может быть поставлен в очередь за раз.
Чтобы отключить постановку в очередь, установите для параметра queue
значение false
.
#
ЗадержкаПри изменении файла задача-наблюдатель не запускается, пока не истечет задержка в 200 мс. Это сделано для того, чтобы не начинать задачу слишком рано, когда одновременно изменяется много файлов - например, поиск и замена.
Чтобы настроить длительность задержки, установите для параметра delay
положительное целое число.
#
Использование экземпляра наблюдателяСкорее всего, вы не будете использовать эту функцию, но если вам нужен полный контроль над измененными файлами - например, доступ к путям или метаданным - используйте экземпляр chokidar, возвращенный из watch()
.
Будьте осторожны: Возвращенный экземпляр chokidar не имеет функций очереди, задержки или асинхронного завершения.
#
Необязательная зависимостьУ Gulp есть необязательная зависимость, называемая fsevents, которая является наблюдателем файлов для Mac. Если вы видите предупреждение об установке для - "npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents" - это не проблема. Если установка fsevents пропущена, будет использоваться резервный наблюдатель, и любые ошибки, возникающие в вашем gulpfile, не связаны с этим предупреждением.