Наблюдение за изменением документов в Gulp

Не очень удобно каждый раз вызывать команду в консоли при необходимости выполнить какое-то преобразование - ведь при написании кода делать это приходится очень часто.

Поэтому в Gulp встроена специальная функция watch для наблюдения за изменением файлов. При изменении любого из отслеживаемых файлов соответствующая задача будет запущена автоматически.

Давайте посмотрим на примере преобразования LESS в CSS. Для начала давайте подключим все необходимое:

let {src, dest, watch} = require('gulp'); let less = require('gulp-less');

Теперь сделаем задачу на преобразование:

function task(cb) { return src('src/*.less') .pipe(less()) .pipe(dest('dist')); }

Теперь выполним экспорт анонимной функции, внутри которой будем отслеживать изменения наших файлов, вызывая в этом случае нашу задачу:

exports.default = function() { watch('src/*.less', task); };

После запуска в командной строке будет крутится "вечная" задача. Это значит, что в этот терминал нельзя будет вбивать другие команды. Прервать выполнение такой задачи можно, нажав в терминале сочетание Ctrl + C.

Можно отслеживать различные группы файлов, привязывая к ним различные задачи:

exports.default = function() { watch('src/*.less', task1); watch('src/*.sass', task1); };

А можно для одной группы выполнить серию задач:

exports.default = function() { watch('src/*.less', series(task1, task2)); };

Пусть у вас есть группа JavaScript файлов. Сделайте так, чтобы эти файлы сливались в один файл, а затем выполнялась минимизация этого файла. Сделайте так, чтобы задача выполнялась при изменении любого из наших файлов.