Программирование • 27 декабря 2024 • 5 мин чтения

Как инструмент Gulp освобождает фронтенд-разработчиков от рутины

Сайты усложняются, и требования к скорости их загрузки растут. Вручную сжимать файлы и очищать проекты — долго. Рассказываем о программе, с которой разрабатывать сайты можно быстрее.

Что такое Gulp и зачем он нужен

Gulp — программа, которую используют фронтенд-разработчики, чтобы автоматизировать задачи вроде сжатия CSS и JavaScript, оптимизации изображений, объединения файлов.

Если делать всё это вручную, разработка отнимет много времени. Gulp берёт рутину на себя. Так получается не только сэкономить время, но и снизить риск ошибок из-за ручного труда. Программа работает как таск-раннер — выполняет задачи, которые ей прописывают в конфигурационном файле.

Знание инструментов вроде Gulp важно для фронтенд-разработчиков. Специалисты, которые умеют сохранять порядок в коде и знают, как оптимизировать работу, ценятся выше. Какие ещё знания и навыки помогут найти первые проекты, расскажут на карьерном треке курса «Фронтенд-разработчик». Сначала студенты осваивают профессию и делают выпускной проект, а затем учатся составлять резюме, выбирать вакансии и проходить собеседования.

Установка и настройка Gulp

Для работы с Gulp понадобится Node.js — среда выполнения JavaScript. Его можно скачать с официального сайта. Установка не требует специальных знаний: достаточно запустить файл и следовать инструкциям. В комплекте с Node.js идёт инструмент npm, или Node Package Manager, — он помогает установить Gulp.

Когда Node.js установится, в терминале нужно выполнить команду:

npm install --global gulp-cli

Установили Gulp CLI (интерфейс командной строки), который позволяет запускать Gulp из терминала

Проверить успешную установку можно с помощью команды:

gulp --version

Перейдём к созданию папки нового проекта и файла package.json:

mkdir my-project
cd my-project
npm init -y

package.json хранит информацию о проекте и его зависимостях

В package.json добавим строку для поддержки модулей:

"type": "module"

Далее установим сам Gulp как зависимость, чтобы связать версию gulp с проектом:

npm install gulp --save-dev

Успешно установили Gulp

Перейдём к настройке Gulp. Начнём с создания файла gulpfile.js — в нём разработчики описывают задачи, которые программа должна выполнять. Файл можно создать в блокноте, а затем сохранить с расширением js. Затем поместим gulpfile.js в корень папки my-project.

Пример простого gulpfile.js:

function defaultTask(cb) {
// укажите код для задачи
cb();
}
exports.default = defaultTask

Проверим, запустится ли задача в терминале с помощью команды:

gulp

Поскольку мы не добавили код задачи, она запустится, но без результата. На этапе подготовки этого достаточно — важно было проверить, что все настроили верно:

Основные задачи и возможности Gulp

  1. Компиляция стилей препроцессоров (Sass, Less, Stylus). Gulp превращает код на языке препроцессоров (например, Sass) в обычный CSS, который понимают браузеры. Так писать стили удобнее: с переменными, вложенностью и функциями.
  2. Минификация CSS и JS. Gulp может сжимать файлы CSS и JavaScript, убирая лишние пробелы и комментарии. Это уменьшает размер файлов, что ускоряет загрузку сайта.
  3. Объединение файлов. Инструмент объединяет несколько файлов CSS или JS в один. Это снижает количество запросов к серверу, что важно для улучшения производительности.
  4. Оптимизация изображений. Gulp автоматически сжимает изображения, уменьшая их вес без заметной потери качества. Это полезно для ускорения загрузки страниц.
  5. Автоматическая перезагрузка браузера. Если подключить к инструменту плагин Browser Sync, можно обновлять страницу в браузере каждый раз, когда файлы будут изменяться. Это экономит время, которое обычно тратят на ручное обновление.
  6. Добавление вендорных префиксов. Gulp автоматически добавляет -webkit- или -moz-в CSS, чтобы стили корректно работали в разных браузерах.
  7. Конвертация шрифтов. Gulp преобразует шрифты из одного формата в другой (например, из TTF в WOFF2) и создаёт готовые файлы для загрузки на сайт.
  8. Копирование файлов. Gulp умеет автоматически копировать нужные файлы (например, HTML или шрифты) из исходной папки в финальную. Это избавляет от ручной работы.
  9. Удаление старых файлов. Перед началом новой сборки Gulp очищает папку с результатами, чтобы старые файлы не мешали обновлённым. Это делает проект чище и упрощает разработку.
  10. Обработка HTML. Gulp может минифицировать HTML, удаляя пробелы и комментарии, или вставлять ссылки на другие файлы (например, на сжатые CSS и JS).

Примеры использования Gulp в реальных проектах

Gulp обычно применяют для решения задач, где нужно быстро собирать, тестировать и оптимизировать файлы. Допустим, нужно разработать лендинг для малого бизнеса. В нём используют:

● стили, написанные на Sass;
● современные JavaScript-фичи, которые нужно конвертировать для поддержки старых браузеров (например, let, const, стрелочные функции);
● изображения, которые нужно оптимизировать.

Проект может выглядеть так:

Задача 1: Скомпилировать Sass (SCSS) в CSS

Sass — это улучшенная версия CSS, но браузеры не понимают SCSS, поэтому его нужно превратить в CSS. С помощью Gulp и плагина gulp-sass можно компилировать файлы Sass в CSS и упростить работу с кастомными стилями.

Установим gulp-sass:

Добавим задачу для компиляции Sass в gulpfile.js:

Дальше создадим исходный файл index.scss в папке src/scss:

Выполним команду:
gulp styles

Скомпилированные CSS-файлы появятся в папке dist/css.

Как это работает:

1. Gulp берёт файлы из папки src/scss.
2. Использует плагин gulp-sass, чтобы превратить SCSS в CSS.
3. Сохраняет результат в папку dist/css.

Задача 2: Минификация JavaScript

JavaScript может содержать лишние пробелы и комментарии. Чтобы сократить размер файла, нужно его «минифицировать».

Установим gulp-uglify:

Задача в Gulp:

Создадим исходный JavaScript файл src/js/index.js:

Выполним команду:
gulp scripts

Получим минифицированный файл src/js/index.js:

function greet(e){console.log(`Hello, ${e}!`)}greet("World");

Задача 3: Сжатие изображений

Большие изображения замедляют загрузку сайта. Gulp может автоматически сжимать их без потери качества с помощью плагина gulp-imagemin. Установим его:

npm install gulp-imagemin --save-dev

Добавим задачу для обработки изображений в gulpfile.js:

Создадим в папке my-project папку dist/images — туда загрузятся сжатые изображения, и src/images — туда загружаем туда изображения для сжатия и выполняем команду:

gulp images

Сжатые изображения появятся в папке dist/images. Логотип logo.png, который весил 300 Кб, после сжатия может весить 150 Кб.

Задача 4: Автообновление страницы с помощью Browser Sync

Установим browser-sync:

npm install browser-sync --save-dev

Добавим задачу для автообновления в gulpfile.js:

В папке dist создадим файл index.html:

Выполним команду:
gulp serve

В браузере откроется страница, которая будет автоматически обновляться при изменении файлов.

Как собрать всё вместе

Настроим одну команду, которая будет запускать все четыре задачи:

import { parallel } from "gulp";
task("default", parallel("styles", "scripts", "images", "serve"));

Теперь команда gulp:

1. Преобразует SCSS в CSS.
2. Минифицирует JavaScript.
3. Сжимает изображения.
4. Запускает автообновление HTML-страницы с помощью Browser Sync.

Преимущества и недостатки Gulp


Преимущества


Недостатки

Простота освоения. Если знать JavaScript на базовом уровне, разобрать с синтаксисом Gulp будет просто. Его API интуитивно понятен: каждый шаг задачи записывается последовательно, что делает код читаемым.

Устаревание. Gulp был невероятно популярен, но с появлением Webpack, Parcel и Vite его популярность снизилась.

Широкий выбор плагинов. У Gulp есть плагины почти для каждой задачи:

○ Минификация (CSS, JS, HTML);
○ Сжатие изображений;
○ Работа с шрифтами;
○ Линтинг кода (например, через ESLint).

Ручная настройка. В Gulp нужно писать каждую задачу вручную, включая подключение плагинов, определение путей и порядок выполнения задач. Это требует больше времени на начальном этапе.

Высокая скорость. Gulp обрабатывает файлы в памяти, не создавая временных файлов на диске. Это ускоряет процесс сборки, особенно в больших проектах.

Сложность масштабирования. Если проект растёт, задачи в Gulp могут становиться громоздкими. В крупных приложениях с десятками задач проще использовать Webpack, где каждая часть сборки управляется модулями.

Гибкость. В одном проекте можно настроить Gulp для сборки лендинга, а в другом — для оптимизации изображений в приложении React.

Совет эксперта

Руслан Посевкин

Gulp справляется с автоматизацией задач вроде сборки стилей, минификации кода или сжатия изображений. Чтобы работать с ним проще и быстрее, настройте процессы для самых частых задач и выбирайте проверенные плагины. Разделите настройки на небольшие файлы — так будет легче поддерживать проект.

Для ещё большего удобства комбинируйте Gulp с другими инструментами. Например, настройте запуск задач перед коммитами с помощью Git Hooks. Добавьте логи ошибок, чтобы быстро находить и исправлять проблемы. Это поможет ускорить работу и облегчит дальнейшую поддержку проекта.

Статью подготовили:
Руслан Посевкин
Яндекс Практикум
Software Engineer
Александра Патрушева
Яндекс Практикум
Редактор
Полина Овчинникова
Яндекс Практикум
Иллюстратор

Дайджест блога: ежемесячная подборка лучших статей от редакции

Поделиться
Вакансии, зарплаты, навыки в 2025 году: бесплатный вебинар с экспертами ведущих IT-компаний 28 января в 19:00
Tue Jan 14 2025 05:15:05 GMT+0300 (Moscow Standard Time)