August 23, 2014
В Gulp имеется встроенная функция для отслеживания изменений в любом из файлов проекта.
Это очень удобно в работе, так как отпадает необходимость вручную запускать определенную задачу каждый раз, когда нужно зафиксировать эти изменения. В предыдущих статьях мы так и делали — запускали вручную на выполнение задачи по умолчанию или же определенную именованную задачу.

Сейчас давайте рассмотрим возможность запуска автоматического мониторинга в Gulp с помощью встроенной функции . Допустим, у нас имеются две именованные задачи, одна из которых выполняет минификацию js-файлов , а вторая — конкатенацию css-файлов :
Нам нужно сделать так, чтобы Gulp запускал их каждый раз самостоятельно, когда мы внесем изменения в любой из js-файлов или css-файлов, а затем сохраним эти изменения.
Для этого создадим еще одну именованную задачу , цель которой — отслеживание изменений в указанных файлах. Создаем все как обычно (или — почти как обычно):
Создаем задачу по имени , а внутри тела функции поместим встроенную функцию . В качестве аргументов этой функции мы передаем ей два параметра.
Первый параметр — что и где Gulp должен отслеживать; говорит о том, что необходимо отслеживать изменения всех файлов с расширением , помещенных в директории .
Второй параметр — что должен делать Gulp, если обнаружит изменения в указанном месте. В данном случае мы говорим ему, что необходимо запустить задачу по имени .
Как видим, имя задачи передается функции в виде массива; отсюда можно сделать вывод, что задач может быть не одна, а несколько — в виде последовательности.
Перейдем от слов к делу и запустим в консоли выполнение мониторинга с помощью функции . Команда для мониторинга в Gulp выглядит таким образом:
Видим, что задача по имени запустилась и вроде как закончилась ( ). Но на самом деле Gulp находиться в фоновом режиме и отслеживает изменения js-файлов.
Чтобы проверить это, отредактируем и сохраним js-файл (в моем случае это ):
Вау! Видим, что в консоли появились две строчки — это отработала задача . То есть, Gulp “увидел”, что я внес изменение в файле и мгновенно запустил задачу , чтобы зафиксировать это изменение. Мониторинг с помощью функции работает!
Давайте немного усложним задачу и добавим мониторинг в директории . При любом изменении файлов в этой папке должна запускаться задача :
Снова запустим Gulp для мониторинга изменений в проекте.
Кстати, а вы знаете, как останавливать Gulp, запущенный в фоновом режиме? Если нет, то это просто — в консоли Linux это выполняется сочетанием клавиш Ctrl+C .
Внесем и сохраним изменения в файле , размещенном в директории . Вернемся в консоль:
О! Видим, что “подхватил” изменение в файле и запустил соответствующую этому изменению задачу . Отлично — все работает!
Мониторинг можно добавить в задачу по умолчанию ( ). Давайте создадим такую конструкцию:
Теперь, если запустить задачу в консоли, то увидим следующее:
Задачи запустились и выполнились именно в той последовательности, в какой они прописаны в массиве. Сперва выполнились две задачи на конкатенацию и минификацию , а затем запустилась задача на мониторинг .
Gulp “повис” в фоновом режиме и отслеживает изменения с помощью функции в указанных директориях. Проверим это и внесем легкое изменение в любом из файлов (пусть это будут снова и ):
Функция прилежно отследила оба эти изменения и запустила соотвествующие им задачи:
Отлично! Мы изучили вопрос создания задачи мониторинга в Gulp с помощью функции !
- Like
- Tweet
- +1
RxJs — map
Первый «серьезный» метод в моей RxJs-копилке знаний. На самом деле все просто — этот метод получает на вход поток, обрабатывает каждый ev. … Continue reading
Я использую Gulp для просмотра часов и sass complier. Когда я запускаю «смотреть» в первый раз, тогда выполняется «sass» complier, и он создает файлы css в соответствии с заданным путем. Однако, когда я меняю файлы .scss, он снова не называет «sass» complier. Ниже приведены мои две задачи и переменные.
После команды я использую для запуска «смотреть» задача
Я вижу «часы» будет перезаряжать, когда я меняю файл .scss. Ниже приведен журнал для этого.
Не уверен, что мне здесь не хватает. Пожалуйста помоги.
Создан 13 фев. 15 2015-02-13 02:50:30 joy
1 ответ
Почему это так сложно? Попробуйте это:
И каждый свою задачу, которая требует LiveReload должна иметь .pipe (LiveReload()) в конце. Вам не следует использовать запуск глотки. Вот один из комментариев от GitHub discussion:
gulp.start is undocumented on purpose because it can lead to complicated build files and we don’t want people using it
Создан 13 фев. 15 2015-02-13 11:15:33 niba
Ее не работает . когда я использовал, как вы предложили, чтобы я себе глоток работает только «смотреть» не другой tasks..following является журналами . .bash-3.2 $ gulp watch [13:14:37] Использование gulpfile
/Desktop/Dilip/Projects/OPEN/SourceCode/AWF/OPENApp/gulpfile.js [13:14:37] Начиная «смотреть» .. . [13:14:37] Закончен «смотреть» после 75 мс – joy 14 фев. 15 2015-02-14 20:15:31
Вы уверены, что вы изменили ‘gulp.src’ на ‘gulp.watch’ внутри часовой задачи? – niba 14 фев. 15 2015-02-14 22:41:49
yaa . Я просто скопировал ваш предложенный подход . но его не работает . похоже, что детские задачи не начинаются вообще. – joy 14 фев. 15 2015-02-14 23:10:23
Не запускается таск watch, сервер стартует, а после него ничего. В чем проблема и как исправить?
2 ответа 2
Проблему решил добавив аргумент done и вызов данного метода done() в таске server .
может поменять на

Всё ещё ищете ответ? Посмотрите другие вопросы с метками javascript gulp или задайте свой вопрос.
Похожие
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
дизайн сайта / логотип © 2019 Stack Exchange Inc; пользовательское содержимое попадает под действие лицензии cc by-sa 4.0 с указанием ссылки на источник. rev 2019.11.15.35459