Создание конфигурационного файла Gulp
Для работы Gulp
необходим специальный файл gulpfile.js
, размещаемый в корневой папке проекта. В этом файле размещаются задачи для Gulp
. Эти задачи представляют собой функции JavaScript.
Сначала объявляются основные свойства, которые Gulp
использует при выполнении задач:
gulpfile.jsconst { src, dest, parallel, series, watch } = require('gulp');
src()
выполняет чтение исходных файловdest()
выполняет запись итоговых файловparallel()
объединяет задачи для выполнения в параллельном режимеseries()
объединяет задачи для выполнения в последовательном режимеwatch()
запускает необходимые задачи при изменениях в файлах
Далее таким же способом подключаются необходимые npm-модули, например:
gulpfile.jsconst sass = require('gulp-sass')(require('sass'));
const browserSync = require('browser-sync').create();
const autoprefixer = require('gulp-autoprefixer');
Затем создаются рабочие задачи со следующей структурой:
- Указывается расположение исходных файлов
- При помощи оператора
pipe()
выстраивается последовательность выполнения операций - Определяется место, куда будут сохраняться итоговые файлы
Чтобы к такой задаче можно было обратиться в любом месте gulpfile.js
, ей обязательно присваивается своё название.
Задача task
Подготовим инструкцию для обработки файла стилей, созданных с использованием CSS-препроцессора SASS, для которой установим следующую последовательность действий:
- Обратиться к исходному файлу в папке
/src/styles/
- Преобразовать синтаксис SASS в стандартный CSS
- Вывести в терминале информацию о наличии ошибок в исходном файле
- Сохранить итоговый файл в папку
/public/styles/
; - Применить с помощью модуля
browser-sync
новые стили для открытой в браузере страницы
До третьей версии Gulp
задачи создавались встроенной функцией gulp.task()
:
gulpfile.jsgulp.task('styles', function() {
return src('./src/styles/style.scss')
.pipe(sass().on('error', sass.logError))
.pipe(dest('./public/styles/style.css'))
.pipe(browserSync.stream())
})
Эта функция регистрирует объявленную инструкцию в качестве общедоступной задачи с названием styles
, которая может взаимодействовать с рабочим окружением. Теперь такую задачу можно запускать на выполнение отдельно командой gulp styles
и в составе сводной задачи.
Начиная с четвёртой версии Gulp
, для создания задач рекомендуется использовать обычные функции. В этом случае задача из примера выше будет выглядеть следующим образом:
gulpfile.jsfunction styles() {
return src('./src/styles/style.scss')
.pipe(sass().on('error', sass.logError))
.pipe(dest('./public/styles/style.css'))
.pipe(browserSync.stream())
}
Формирование задачи с использованием такой функции создаёт инструкцию, которая доступна только для внутреннего использования. Чтобы объявленная функция могла взаимодействовать с рабочим окружением и выполняться командой gulp
, её необходимо экспортировать в общедоступную задачу:
gulpfile.jsexports.styles = styles
Только после этого функция станет доступной для запуска и выполнения как отдельной командой gulp styles
, так и в составе сводной задачи.
Работа с проектом и его сборка
Запуск проекта в режиме разработки осуществляется сводной задачей default
, название которой зарезервировано в Gulp
:
gulpfile.jsexports.default = parallel(
styles,
scripts,
pages,
watch_dev
)
Поскольку задача default
для Gulp
является задачей по умолчанию, запустить её можно командой gulp
.
Для сборки проекта обычно создаётся отдельная задача с произвольным названием, которая последовательно выполняет необходимые действия:
gulpfile.jsexports.build = series(
styles,
scripts,
pages
)
После этого сборка итоговой версии проекта осуществляется вводом в терминале команды gulp build
.