Как установить gulp sass
Gulp Sass. Установка, настройка, его возможности и применение в своих проектах.
Что такое Sass
Зачем нужен Sass
Чтобы понять, зачем нужен Sass, перечислим его некоторые возможности:
Если коротко зачем нужен Sass: он ускоряет и упрощает процесс разработки.
Как использовать Sass
Существуют разные способы начать использовать Sass:
Рассмотрим использование Sass для таск-менеджера Gulp. Перед тем как начать установку, желательно ознакомиться с основами Gulp.
Установка, подключение и настройка gulp-sass
Для установки плагина gulp-sass в наш проект, откроем командную строку в папке проекта. Введём следующую команду:
В скобках sass(<>) можно задавать дополнительные настройки.
Gulp Sourcemaps
Установка плагина gulp-sourcemaps.
Gulp notify
На данный момент, обработку ошибок в sass-файле мы ловим в следующей строке.
Это позволит получать следующие уведомления на рабочем столе.
Как видите это очень удобно. Сразу видно в каком файле и на какой строке была совершена ошибка.
Теперь вы будете получать уведомления об ошибках на рабочем столе.
Возможности Sass
Их огромное количество, рассмотрим лишь самые популярные. С полным списком можно ознакомиться на официальном сайте.
Ссылка на родительский селектор &.
Арифметические операции с числами.
Арифметические операции с цветами.
Использование функций в sass официальный сайт.
Статьи про Gulp
English | Russian |
---|---|
Awesome Stylesheets | Удивительные стили |
Gulp | Глоток |
Dependencies | Зависимости |
Task | Задача |
Return | Возврат |
Destination | Пункт назначения |
Import | Импортировать |
Include | Включать |
Надеюсь, вам понравилась данная информация. Если вам интересна тема web-разработки, то можете следить за выходом новых статей в Telegram.
Gulp — установка и настройка
Автор: Гончаров · Опубликовано 13.11.2017 · Обновлено 28.10.2019
Gulp — установка и настройка.
Где-нибудь создать папку, к примеру к корне диска С, называем gulp, и в ней папка myproject. Главное, чтобы в пути к ней не было русских букв.
Внутри этой папки — зажимаем клавишу SHIFT и кликаем правой кнопкой мыши (пкм) по пустому месту, тогда в контекстном меню будет пункт «открыть командное окно». Выбираем его, оно появляется и в нем сразу будет путь к нашей папке.
В окне команд пишем:
npm init — инициализация нашего проекта, типо создание, по типу объявления переменной в js.
там нужно будет ответить на несколько вопросов:
после этого в папке появляется файл package.json — в нем сохранилась вся инфа, которую мы писали только что в командной строке.
это установка зависимостей пакетов, которые работают вместе с gulp. В нашей папке появилась папка _node_modules.
Устанавливаем проверку обновлений пакетов в gulp
Нужно установить проверку обновлений всех пакетов, которые мы наустанавливаем в галп:
потом, когда в очередной раз будем пользоваться галпом, то при запуске может появиться ошибка. Как вариант — это устарел какой-то из пакетов.
Поэтому надо написать:
В нашей папке myproject надо создать такую структуру папок:
В корне создаем папки app и dist
Внутри app:
cd app — пишем прямо в нашей командной строке, это мы переходим в папку app, а потом
— так сразу создаются все папки, чтобы не ипаться сто раз не кликать правой кнопкой в окошке виндоус — создать папку, и писать ей имя.
Не забыть создать файл index.html.
Папка app — это папка, в которой все исходники — css, изображения, скрипты и т.д. А папка dist — это уже ГОТОВЫЙ проект, откомпилированный, готовый к выгрузке, туда будут складываться уже отбработанные файлы.
Создаем файл gulpfile.js в корневой папке.
Проверяем работу gulp. Открываем этот файл и пишем в него:
ОБЯЗАТЕЛЬНО ТОЧКУ С ЗАПЯТОЙ В КОНЦЕ!! Иначе не заработает.
После этого в командной строке можно написать gulp mytask и должно показаться «Привет, я таск!»
Шаблон для создания любой задачи (task) в gulp:
Т.е. откуда брать файл, что с ним сделать и куда отгрузить.
РЕАЛЬНО ЖЕ в него пишем следующее, все с самого начала:
Заходим в папку app>sass и создаем там файл main.sass.
Пишем в него хотя бы что-нибудь, чтобы проверить работу:
Возвращаемся в файл gulpfile.js и пишем в него (добавляем строки):
В итоге создастся файл main.css в папке app>css, скомпилированный и оптимизированный уже.
Маски для создания путей для источника файлов, на примерах
app/sass/*.sass — все файлы в конкретной папке с расширением sass
app/sass/**/*.sass — все файлы с расширением sass, которые находятся в app/sass/ независимо от уровня вложенности, во всех подпапках…. все все все короче.
!app/sass/main.sass — восклицательный знак в начале, это исключение файла.
app/sass/*.+(scss|sass) — все файлы с расширением scss и sass
Дополнительно
В папке sass можно создать файл с именем, начинающимся с нижнего подчеркивания, например _part.sass. Такие файлы не участвуют в комплияции как отдельные файлы. Их надо просто импортировать командой @import в основной файл. Т.е.:
В файл main.sass в самое начало добавляем импорт и получаем:
В итоге этот фрагмент будет в начале того файла, куда импортируешь. То есть если в main.sass написать, то этот фрагмент будет в итоговом скомпилированном main.css.
Автоматическая компиляция файлов sass при сохранении
Используется метод watch. Синтаксис такой:
LiveReload
LIveReload — это автоматическое обновление стилей css на html странице при их сохранении.
Нужно установить браузер-синк (их сайт https://www.browsersync.io/ )
Останавливаем режим слежения (если запущен) Cntrl+С ДВА РАЗА и устанавливаем эту штуку:
Установить установили, а теперь нужно подключить его в gulpfile.js.
добавляем эту строку
то есть теперь начало в файле получается таким:
теперь надо написать таск (выполнение задачи) для браузер-синка:
Чтобы автоматически отражались не только css, но и html и js, нужно добавить пару строк в таск watch:
Создаем папку libs в папке app. Туда мы будем сваливать все какие-то библиотеки, jquery плагины и другие плагины.
Bower
Для установки новых библиотек лучше использовать Bower (используется для установки новых плагинов)
На их сайте говорится, что для работы нужен git, скачиваем и устанавливаем его для своей платформы.
сохраняем. Так, он говорит менеджеру пакетов куда устанавливать новые плагины.
Теперь для примера установим два плагина, в командной строке пишем:
появятся две папки jquery и magnific-popup в папке app>libs.
Установить два пакета для сбора всех файлов js и минизации:
После установки любой приблуды, надо не забывать подключать ее в файле gulpfile.js, поэтому добавляем там строки:
Создаем таск для этой утилиты:
Подключаем jquery в html.
В конце тега body добавляем строки:
т.е. общую сжатую библиотеку и ручной (common.js), он обычно не сжимается, т.к. весит немного.
В папке app>sass создаем файл libs.sass, куда будем сваливать все css библиотеки.
Устанавливаем утилиты, которые будут сжимать css и добавлять в название суффикс mini:
И опять после установки их нужно подключить в основном файле gulpfile.js. последние 2 строчки это они:
пишем таск для них:
Сюда можно, но не обязательно перенести [‘sass’] из таска watch. Получится вот так:
Подключаем css стили в html документ:
Сваливаем готовое в папку dist
Для этого создаем таск
Для того, чтобы перестраховаться, лучше бы для начала очистить папку dist от прежних файлов, если там что-то было.
Для этого устанавливаем утилиту для удаления файлов, пишем в командной строке:
После успешной установки, ее надо подключить в файл gulpfile.js, как обычно:
Оптимизация изображений в gulp
Устанавливаем пакет для оптимизации изображений
Подключаем его в gulpfile.js
Пишем таск для них.
И вставляем вызов этого таск в таск build, т.е. добавляем
теперь при запуске таска build будут все эти таски выполняться последовательно, которые в него запихали.
Если изображений много, то надо установить кеш
потом подключаем его в начале файла gulpfile.js:
И немного модифицируем после этого таск img:
Если мы поменяем папку для изображений или файлы, которые хотим оптимизировать, то у нас не будет работать минификация изображений из-за кеша.
Поэтому надо написать новый таск для очистки кеша:
Он запускается чисто вручную, т.к. нужен редко, и нет необходимости его встраивать его в какой-либо таск.
Автоматическое создание вендорных префиксов в gulp
Для этого сначала устанавливаем пакет:
Как всегда теперь подключаем его в начале файла.
И добавляем новый пайп в таск sass:
Резюме
Итоговое содержание файла gulpfile.js
Итоговое содержание файла package.json
Структура папок
п.с. статья построена на базе видосика канала webdesigner master:
Спасибо за видосик, Алексей, всё толково и понятно.
Всем привет, друзья! Сегодня мы подробно рассмотрим, что такое Gulp и как с его помощью можно автоматизировать работу Front-end разработчика. В результате урока мы соберем серьезное и внушительное рабочее Front-end окружение для веб-разработки с использованием Gulp.
Основные ресурсы урока:
С примером урока вы можете ознакомиться на GitHub: agragregra/gulp-lesson
Установка Gulp
Внимание! Если вы пользователь последней версии Windows, рекомендую использовать WSL для веб-разработки. Скачивать инсталлятор с сайта Nodejs.org в этом случае не нужно. Воспользуйтесь этим руководством: Использование подсистемы Linux для веб-разработки в Windows.
Если у вас возникли проблемы при прохождении урока с использованием Gulp 4, рекомендую откатиться на 3 версию, пройти полностью урок и только после этого обновить package.json до 4 версии. Для лучшего понимания. Откатить версию можно в файле package.json. Вместо «gulp»: «^4.x.x», напишите версию «^3.9.1», удалите папку «node_modules» и установите пакеты заново «npm i«.
После того, как Node установлен, можно приступать к установке Gulp. Откройте терминал (правая кнопка мыши в папке с зажатым Shift > Откройте здесь оболочку Linux) и выполните следующую команду:
Создание проекта Gulp
Давайте создадим папку проекта для примера, с которой будем работать, пусть это будет, например, папка myproject.
Очень важно! Не создавайте русскоязычные папки проектов и следите за тем, чтобы путь до папки проекта не содержал кириллических символов, то-есть не был написан на русском языке. В противном случае, у вас могут возникнуть проблемы при работе различных утилит Gulp. Папка вашего пользователя также не должна быть русскоязычной. Все только латинскими буквами.
Теперь откроем терминал в папке проекта. Для пользователей Windows достаточно зажать Shift и открыть контекстное меню. В нем появится пункт «Откройте здесь оболочку Linux». Оболочка Linux должна быть предварительно установлена, см урок: Использование подсистемы Linux для веб-разработки в Windows.
Далее выполним инициализацию проекта в той папке, которую создали:
Следуя инструкциям, заполним метаинформацию о нашем проекте:
Назовем проект «MyProject»
Имя автора можно и указать 🙂
license оставляем по умолчанию и вводим yes:
В результате такой несложной первоначальной настройки нашего нового Gulp проекта в папке myproject нарисуется новый файл package.json.
Файл package.json является файлом манифеста нашего проекта, который описывает помимо той информации, что мы внесли в терминале, еще и информацию об используемых пакетах в нашем проекте.
Например, если мы установим в проект Gulp с ключом —save-dev, то пакет и используемая версия автоматически добавится в наш package.json. Такой учет позволит быстро разворачивать новый проект с использованием уже имеющегося package.json и устанавливать необходимые модули с зависимостями, которые прописаны в package.json в новых проектах.
Давайте установим в наш проект Gulp:
Кроме того, у нас появляется папка node_modules, которая теперь содержит установленный пакет gulp и необходимые зависимости. В данную папку автоматически будут сваливаться все модули и зависимости, которые мы будем устанавливать в проект. Папок с зависимостями может быть очень много, не смотря на то, что мы установили не так уж и много пакетов. Это связано с тем, что в дополнение к основным пакетам устанавливаются программы, необходимые для корректной работы основного пакета. Ни чего чистить и удалять из папки node_modules не нужно. Кроме того, у вас может появиться дополнительный файл package-lock.json. В этом нет ничего страшного, это служебный файл, на который можно просто не обращать внимания.
Структура каталогов в проектах
Работая с различными плагинами, программами и скриптами, будь то jQuery плагин, модуль для CMS, веб-проект или какое-то другое ПО, вы наверняка замечали, что у всех проектов есть схожая структура каталогов, например, большинство проектов имеет папку dist и app. Давайте создадим первоначальную структуру нашего учебного проекта. В результате мы должны создать следующую структуру в нашем проекте myproject (все файлы, которых не было, пока создаем пустыми):
- myproject/
- app/
- css/fonts/img/js/sass/index.html
dist/node_modules/gulpfile.jspackage.json
Данная структура встречается довольно часто, практически во всех проектах, но это не аксиома и некоторые проекты могут иметь вообще другую структуру. Для данной статьи мы будем использовать именно такую структуру проекта.
Папка dist/ будет содержать уже готовый продукт, оптимизированный, сжатый, причесанный. Это папка продакшена.
gulpfile.js
Теперь давайте откроем в редакторе кода gulpfile.js и напишем в него:
Данной строчкой мы подключаем Gulp к нашему проекту, посредством функции require. Данная функция подключает пакеты из папки node_modules в наш проект, присваивая их переменной. В данном случае, мы создаем переменную gulp.
Далее мы уже можем работать с этой переменной и создавать таски (инструкции).
gulpfile.js:
Результат выполнения команды gulp mytask:
Если вы используете Gulp 4 и у вас появляется ошибка о невозможности завершения таска, можно добавить async перед function() и выполнять код асинхронно:
Это, конечно очень простой базовый пример создания таска. Как правило, таски несколько сложнее и включают некоторые дополнительные команды:
Это база Gulp, теперь можно создавать инструкции. Для начала давайте создадим обработчик, который будет компилировать Sass файлы в CSS (CSS препроцессинг).
Gulp Sass
Давайте установим пакет gulp-sass в наш проект с сохранением версии и названия в package.json.
Обратите внимание, что любые Gulp пакеты, для любых задач, легко гуглятся и имеют вполне исчерпывающие инструкции по подключению на своих хоумпейджах и в документации.
Далее подключим gulp-sass в файле gulpfile.js. Обратите внимание, что переменные для подключения пакетов можно перечислять через запятую:
gulpfile.js:
После этого, логичным будет выполнить в терминале наш новый таск sass:
В результате выполения данной команды в папке app/css появится файл main.css.
От таки чудеса, друзя. Как видим, все просто 🙂
Выборка файлов для gulp.src
В принципе, мы рассмотрели все, что необходимо знать о Gulp, теперь будем углубляться в каждую деталь того, что было изложено выше.
Давайте познакомимся ближе со всеми возможностями выборки файлов для обработки.
Самые распространенные шаблоны выборки
Давайте внесем некоторые изменения в таск sass и сделаем его более универсальным:
Дело в том, что брать напрямую один отдельный файл не всегда удобно, так как в папке sass могут появиться и другие файлы с расширением sass, которые могут использоваться в проекте.
Обратите внимание, что файлы sass, которые предназначены для импорта в другие файлы, как части одного общего, начинаются с нижнего подчеркивания _part-1.sass. Такие файлы не учавствуют в компиляции, как отдельные файлы, а добавляются через @import в основные файлы.
Наблюдение за изменениями в файлах (Gulp Watch)
Gulp поддерживает метод watch для проверки сохраняемых файлов и имеет следующий синтаксис:
Если мы, например, хотим наблюдать за всеми изменениями в файлах sass нашего проекта, то можем использовать следующую конструкцию:
Что мы видим: Gulp наблюдает за всеми sass файлами и при сохранении выполняет таск sass, который автоматически компилирует их в css файлы.
Также, мы можем создать отдельный таск для наблюдения за всеми необходимыми файлами
Для Gulp 4 код будет выглядеть так:
Если мы запустим в консоли gulp watch, то Gulp будет автоматически следить за всеми измененями в файлах sass при сохранении и компилировать их в css.
Было бы неплохо в дополнение к этой красоте сделать автоматическую перезагрузку страницы при изменениях в файлах. Для этой задачи нам подойдет Browsersync.
Автоматическое обновление страниц с использованием Bbrowser Sync
Мы уже умеем устанавливать дополнения для Gulp, поэтому давайте установим Browser Sync в наш проект:
И, конечно-же, подключим в файле gulpfile.js, как мы это делали ранее с пакетом gulp-sass.
Создаем таск для Browser Sync:
Отлично! Наш сервер для работы и автоматического релоада готов. Теперь давайте последим за изменениями в Sass. Если файл Sass обновляется, автоматически инжектим в HTML измененный CSS файл:
Обратите внимание, что мы выполняем таски [‘sass’, ‘browser-sync’] до запуска watch, так как их выполнение необходимо нам для корректного отображения изменений на момент запуска сервера.
Для Gulp 4 логичнее было бы написать так и выполнять всю конструкцию в дефолтном таске:
Расположим таск watch после всех других тасков и в результате получим такой gulpfile.js для Gulp 3:
Такой код получится для Gulp 4:
Для того, чтобы следить за изменениями в браузере, сделаем соответствующую разметку в файле index.html директории app с подключением файла стилей main.css:
Выполним в терминале команду «gulp». Результат завораживает:
Давайте разберемся, что у нас происходит в консоли (картина может разниться, в зависимости от версии ПО):
И эта задача нам по плечу. Создайте в папке app/js файл common.js. Это основной пользовательский JS файл в нашем проекте. Модифицируем код:
Код для Gulp 4 (здесь лучше добавить дополнительный таск для обработки HTML и JS):
Здесь мы используем функцию browserSync.reload, которую нам любезно предоставил пакет Browser Sync. Обратите внимание на выборку файлов для слежения.
В принципе, мы уже имеем довольно продвинутое рабочее окружение. Но двигаемся дальше, это не все, на что способен Gulp.
Оптимизация JavaScript
Давайте рассмотрим, как можно оптимизировать JS файлы проекта. Чаще всего, в оптимизации нуждаются библиотеки и сторонние jQuery и JavaScript плагины. Давайте создадим в папке app паку libs, которая будет содержать необходимые проекту библиотеки. Все библиотеки будем размещать в отдельных папках.
Для установки новых библиотек рекомендую использовать Bower.
Обратите внимание, что для работы Bower необходим установленный https://git-scm.com/downloads. Если в ОС Windows вы используте оболочку Ubuntu bash, то установку Git выполнять не нужно.
Теперь в папке проекта создадим файл .bowerrc, в который напишем:
Если вы пользователь ОС Windows, у вас не получится просто взять и создать файл, начинающийся с точки. В этом случае можно просто поставить точку в конце файла и нажать Enter: .bowerrc.
Данной настройкой мы указываем путь по умолчанию для установки плагинов с помощью Bower.
Установим jQuery и Magnific Popup, для примера:
Обратите внимание, что все (ну, или почти все) плагины имеют папку dist, об этом мы говорили ранее. В этой папке располагаются готовые файлы продакшена, которые мы и будем использовать в нашем проекте.
Давайте создадим таск scripts, который будет собирать все JS файлы библиотек в один и минифицировать файл. Для этого установим 2 пакета: gulp-concat и gulp-uglifyjs.
Подключим новые библиотеки в gulpfile.js:
Создаем задачу для сборки и сжатия всех библиотек (перед watch):
Давайте проверим, как работает наш новый таск scripts, выполнив в терминале:
Выполнение таска scripts можно запустить перед выполнением watch. Gulp 3:
На выходе, в папке app/css мы получаем дополнительно к main.css файл libs.css, который содержит стили всех библиотек. Файл main.css нет особого смысла минифицировать, так как он содержит кастомные (пользовательские) стили. А вот файл libs.css мы с удовольствием минифицируем.
Внимание! Если в файле libs.css не появляется кода библиотек, а вы по-прежнему видите в нем конструкции @import, создайте отдельный файл _libs.sass для библиотек, который начинался бы с нижнего подчеркивания. Затем импортируйте этот файл в главный, тем самым объеденив и библиотеки и пользовательские стили в один файл.
Для минификации CSS установим пакеты gulp-cssnano и gulp-rename:
И подключим их в нашем gulpfile.js:
И создадим соответствующий таск css-libs. Сразу добавим данный таск в watch для того, чтобы библиотеки собирались в процессе запуска проекта. Таск sass лучше вызвать до запуска css-libs, чтобы нам было что минифицировать:
Подготовка к продакшену
Результирующий код для Gulp 4 будет представлен в конце статьи.
Для продакшена (сборки в папку dist) мы создадим отдельный таск build в конце gulpfile.js. В данной инструкции мы осуществим сборку Sass, JS и выгрузку того, что у нас готово в папку dist.
Здесь, присваивая переменным какие-либо действия, мы их выполняем. Таким образом можно выполнять мультизадачные таски. Можно и не присваивать, но мы сделаем так, ибо красивше.
Все прекрасно, но всегда есть одно «Но». Перед тем, как собирать проект нам желательно бы очистить папку dist, чтобы не оставалось лишних потрохов от предыдущих итераций с нашим проектом.
Установим и подключим пакет del:
Создаем таск очистки clean и добавляем его выполнение перед выполнение build:
Для Gulp 4 попробуйте составить таски самостоятельно, как мы это делали в предыдущих прмерах.
Оптимизация изображений
Как вы могли заметить, в нашем проекте на продакшене не хватает изображений. Давайте исправим это недоразумение и добавим обработку изображений в наш проект. Данный раздел выполнен с использованием Gulp 3. Код для Gulp 4 можно адаптировать самостоятельно, как мы это делали ранее.
В папке app/img есть 3 изображения, которые нам необходимо перенести в папку продакшена, оптимизируя.
Для оптимизации изображений установим 2 пакета (gulp-imagemin, imagemin-pngquant) и подключим их:
Далее создадим таск img для сжатия изображений на продакшен и вызовем его после очистки:
Все прекрасно. До тех пор, пока количество изображений в проекте не превышает 3 шт. Большое количество картинок будет обрабатываться значительно дольше, поэтому к обработке изображений было бы неплохо добавить кеш, чтобы картинки кешировались, экономя наше время.
Установи м подключим gulp-cache:
Модифицируем таск img:
Автоматическое создание префиксов CSS с помощью Gulp
Вендорные префиксы необходимы для обеспечения максимальной совместимости со всеми современными браузерами. Было бы логично сделать автоматическое добавление префиксов, чтобы написав в CSS или Sass:
Мы получили на выходе:
Установим пакет gulp-autoprefixer и подключим его в gulpfile.js:
И модифицируем наш таск sass:
Дефолтный таск Gulp
Внимание! Дефолтный таск для Gulp 4 отличается от приведенного в этой главе. Полный код для Gulp 4 можно будет посмотреть в конце статьи.
Также, необходимо создать автономный таск для очистки кеша Gulp, чтобы его можно было вызывать простой командой gulp clear:
Если у вас возникнут проблемы с изображениями или другими кешируемыми файлами, просто почистите кеш.
В результате, у нас должен получиться такой gulpfile.js. Gulp 3:
Результирующий код для Gulp 4:
С примером урока вы можете ознакомиться на GitHub: agragregra/gulp-lesson
Чтобы установить все пакеты и зависимости для скачанного примера, выполните команду npm i в папке проекта.
Премиум уроки от WebDesign Master
Создание сайта от А до Я. Комплексный курс
Создание современного интернет-магазина от А до Я