0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>Важной функцией из встроенных в основной пакет<em>Gulp</em>является функция watch(). Как можно понять по её названию, её основная цель - отслеживание. Но отслеживание чего и как? Об этом мы и поговорим в этом уроке.</p>
1
<p>Важной функцией из встроенных в основной пакет<em>Gulp</em>является функция watch(). Как можно понять по её названию, её основная цель - отслеживание. Но отслеживание чего и как? Об этом мы и поговорим в этом уроке.</p>
2
<p>Функция watch() вынесена в отдельный урок не просто так - её функционал и применение значительно шире, чем при использовании уже изученных команд, например src(). Watch - это не просто функция внутри задачи, а это и есть задача сама по себе, которая начинает свою работу сразу при выполнении команды gulp и завершает свою работу при завершении работы всего скрипта.</p>
2
<p>Функция watch() вынесена в отдельный урок не просто так - её функционал и применение значительно шире, чем при использовании уже изученных команд, например src(). Watch - это не просто функция внутри задачи, а это и есть задача сама по себе, которая начинает свою работу сразу при выполнении команды gulp и завершает свою работу при завершении работы всего скрипта.</p>
3
<p>Для начала разберёмся, как задать отслеживание файла. Для этого используется сама функция watch(), которая принимает три основных параметра:</p>
3
<p>Для начала разберёмся, как задать отслеживание файла. Для этого используется сама функция watch(), которая принимает три основных параметра:</p>
4
<ol><li>Пути к отслеживаемым файлам</li>
4
<ol><li>Пути к отслеживаемым файлам</li>
5
<li>Параметры отслеживания</li>
5
<li>Параметры отслеживания</li>
6
<li>Функция или задача, которая вызывается при изменении файла</li>
6
<li>Функция или задача, которая вызывается при изменении файла</li>
7
</ol><p>Второй параметр часто опускают, и тогда вотчер (так часто называют функции, которые занимаются отслеживанием каких-либо действий) выглядит примерно следующим образом:</p>
7
</ol><p>Второй параметр часто опускают, и тогда вотчер (так часто называют функции, которые занимаются отслеживанием каких-либо действий) выглядит примерно следующим образом:</p>
8
<p><strong>Важно:</strong>в качестве пути можно использовать уже изученные<em>Globs</em>. Так же это не обязательно должен быть файл. В качестве пути можно указать целую директорию и там будут свои события, о них мы поговорим ниже</p>
8
<p><strong>Важно:</strong>в качестве пути можно использовать уже изученные<em>Globs</em>. Так же это не обязательно должен быть файл. В качестве пути можно указать целую директорию и там будут свои события, о них мы поговорим ниже</p>
9
<p>Функция, которая была передана в качестве аргумента watch() ничем не отличается от того, что использовалось в прошлых уроках. Главное отличие - она не имеет названия, такие функции ещё называют анонимными. Это не обязательное требование, например, мы можем создать функцию и указать её название в качестве параметра. Это не изменит поведение работы watch. То есть пример выше равнозначен следующему примеру:</p>
9
<p>Функция, которая была передана в качестве аргумента watch() ничем не отличается от того, что использовалось в прошлых уроках. Главное отличие - она не имеет названия, такие функции ещё называют анонимными. Это не обязательное требование, например, мы можем создать функцию и указать её название в качестве параметра. Это не изменит поведение работы watch. То есть пример выше равнозначен следующему примеру:</p>
10
<p>Обратите внимание, что во втором примере при изменении файла<em>Gulp</em>пишет название функции, которая вызывалась, потому что теперь она не анонимная. При изменении файла вызывается функция changeAppStylesFile(), что видно в выводах самого<em>Gulp</em>.</p>
10
<p>Обратите внимание, что во втором примере при изменении файла<em>Gulp</em>пишет название функции, которая вызывалась, потому что теперь она не анонимная. При изменении файла вызывается функция changeAppStylesFile(), что видно в выводах самого<em>Gulp</em>.</p>
11
<h2>События</h2>
11
<h2>События</h2>
12
<p>На какие события реагирует функция watch()? По умолчанию это все события, которые как-либо связаны с изменением файлов или директории. Также мы можем собственноручно указывать, какие события необходимы. Это необходимо для того, чтобы лишний раз не вызывать задачу в моменты, когда в этом нет необходимости. Например, мы не хотим выполнять действие при добавлении файла в директорию, а только при его изменении.</p>
12
<p>На какие события реагирует функция watch()? По умолчанию это все события, которые как-либо связаны с изменением файлов или директории. Также мы можем собственноручно указывать, какие события необходимы. Это необходимо для того, чтобы лишний раз не вызывать задачу в моменты, когда в этом нет необходимости. Например, мы не хотим выполнять действие при добавлении файла в директорию, а только при его изменении.</p>
13
<p>Для этого используется второй параметр функции watch() который определяет параметры работы функции. За то, на какие действия будет происходить вызов задачи отвечает параметр events. Внутри него можно указать или одно конкретное событие или сразу несколько. Разберёмся с тем, какие именно события доступны при использовании<em>Gulp</em>:</p>
13
<p>Для этого используется второй параметр функции watch() который определяет параметры работы функции. За то, на какие действия будет происходить вызов задачи отвечает параметр events. Внутри него можно указать или одно конкретное событие или сразу несколько. Разберёмся с тем, какие именно события доступны при использовании<em>Gulp</em>:</p>
14
<ul><li>add - добавление нового файла</li>
14
<ul><li>add - добавление нового файла</li>
15
<li>change - изменение файла</li>
15
<li>change - изменение файла</li>
16
<li>unlink - удаление файла</li>
16
<li>unlink - удаление файла</li>
17
<li>addDir - добавление директории</li>
17
<li>addDir - добавление директории</li>
18
<li>unlinkDir - удаление директории</li>
18
<li>unlinkDir - удаление директории</li>
19
<li>ready - окончание сканирования путей для отслеживания. В этот момент вотчер готов следить за изменениями. Такой этап можно назвать окончанием инициализации</li>
19
<li>ready - окончание сканирования путей для отслеживания. В этот момент вотчер готов следить за изменениями. Такой этап можно назвать окончанием инициализации</li>
20
<li>error - ошибка работы отслеживания</li>
20
<li>error - ошибка работы отслеживания</li>
21
</ul><p>По умолчанию параметр events имеет значение all, что указывает на отслеживание всех событий. Исключением являются события ready и error, так как они относятся больше к внутренней логике работы самой функции.</p>
21
</ul><p>По умолчанию параметр events имеет значение all, что указывает на отслеживание всех событий. Исключением являются события ready и error, так как они относятся больше к внутренней логике работы самой функции.</p>
22
<p>В большинстве случаев используют событие по умолчанию, то есть all. Так как для компиляции SASS, Pug и других препроцессоров/шаблонизаторов критично не только изменение файлов, но и их добавление/удаление.</p>
22
<p>В большинстве случаев используют событие по умолчанию, то есть all. Так как для компиляции SASS, Pug и других препроцессоров/шаблонизаторов критично не только изменение файлов, но и их добавление/удаление.</p>
23
<p><strong>Важно:</strong>в отличие от обычных задач, watch() будет работать ровно до того момента, пока его принудительно не остановят. Это важно учитывать при разработке. Можно забыть остановить процесс в терминале и получить те компиляции, которые мы не ожидали</p>
23
<p><strong>Важно:</strong>в отличие от обычных задач, watch() будет работать ровно до того момента, пока его принудительно не остановят. Это важно учитывать при разработке. Можно забыть остановить процесс в терминале и получить те компиляции, которые мы не ожидали</p>
24
24