В статье рассмотрены три модуля для работы под Gulp -
,
1 gulp-rename,
1 gulp-notify.
1 gulp-autoprefixer
Все три модуля слишком маленькие и слишком простые, чтобы их рассматривать в отдельности. Все приведенные в статье примеры являются базовыми и служат задаче показать принцип работы каждого из модулей.
Подготовка проекта
Подготовим проект, создав его базовую основу. Первым файлом создадим файл
и наполним его таким содержимым:1
package.json
Затем установим локально Gulp.js и укажем
, чтобы он внес этот пакет в качестве зависимостей в файл 1
npm
:1
package.json
Создаем js-файл, в котором будем прописывать задачи для Gulp:
Основа для тестирования отдельных модулей готова.
Gulp-rename - переименование файлов
Задача модуля
предназначена для одной маленькой цели - переименования файлов. Установим модуль с указанием зависимостей:1
gulp-rename
И создадим задачу в файле
для установленного модуля 1
gulpfile.js
:1
gulp-rename
В задаче под именем
для Gulp “говориться” следующее: найти файл 1
rename
- 1
style.css
; переименовать его в имя 1
gulp.src('css/style.css')
- 1
pretty_styles
; переименованный файл положить в папку по пути 1
.pipe(rename('pretty_styles.css'))
- 1
build/css/
.1
.pipe(gulp.dest('build/css/'))
Запускаю задачу
в консоли и вижу, что процесс прошел успешно:1
rename
Проверяю, “положил” ли Gulp переименованный файл
по пути 1
pretty_styles.css
:1
build/css/
Да, все верно, файл
находиться там, где он и должен находиться.1
pretty_styles.css
Рассмотренный выше пример очень прост. Более сложные и интересные возможности модуля
показаны на его официальной странице - gulp-rename. А именно - возможности переименования с помощью функций или с помощью префиксов\суффиксов.1
gulp-rename
Gulp-notify - уведомление о событиях
Установка модуля
выполняется как обычно:1
gulp-notify
Затем создаю задачу
, которая будет отслеживать все изменения в файле 1
notify
. Задача информирования об изменениях подразумевает ее использование в фоновом режиме.1
css/style.css
Поэтому, создаю еще одну задачу для мониторинга -
, которую помещаю в дефолтную задачу 1
watch
. В общем случае файл 1
default
будет выглядеть следующим образом:1
gulpgile.js
В консоли запускаю Gulp с дефолтной задачей
:1
default
Теперь вношу в файл
изменения и сохраняю их. На Рабочем столе мгновенно появляется всплывающее окно с уведомлением о внесенных в файл 1
css/style.css
изменениях. Не знаю, как в других системах, но на Linux Mint 17 Cinnamon это окошко выглядит очень симпатично.1
css/style.css
На странице GitHub автора модуля представлены более интересные примеры создания и использования
.1
gulp-notify
Gulp-autoprefixer - браузерные префиксы
Интересный модуль
для управления браузерными префиксами в проекте. Задача у него - не просто устанавливать префиксы для тех CSS3-свойств, которые нуждаюся в этом на данный момент (другими словами - для включения их поддержки в браузерах).1
gulp-autoprefixer
С помощью
можно управлять “глубиной” версий браузеров, которые должны поддерживать работу конкретного проекта. Другими словами, можно указать модулю 1
gulp-autoprefixer
, что необходимо отслеживать поддержку префиксов только в двух последних версиях каждого (из всех существующих) браузера - 1
gulp-autoprefixer
(кстати, это значение по умолчанию для данного модуля).1
last 2 versions
Или же учитывать только две последние версии браузера Google Chrome -
. При задании префиксов можно учитывать глобальную статистику использования браузера - 1
last 2 Chrome versions
(если брузер используют больше 5% населения Интернет).1
> 5%
Модуль
использует собственные имена для браузеров при задании параматров работы своей работы. С полным списком еще более интересных возможностей для задания выборки браузеров можно (и нужно) ознакомиться на странице GitHub.1
gulp-autoprefixer
Работа модуля
основана на известном ресурсе Can I Use. Именно оттуда он берет инормацию о поддержке браузерами того или иного CSS3-свойства на данный момент. Кстати, известный фреймворк Compass также основывается на Can I Use при работе со своими миксинами (mixin).1
gulp-autoprefixer
Помимо этого, модуль
умеет красиво форматировать CSS-свойства с браузерными префиксами в виде визульного каскада:1
gulp-autoprefixer
За такую возможность отвечает параметр
, который включен по умолчанию в данном модуле. Вообще, по умолчанию модуль 1
cascade
имеет такие параметры в виде массива (array): 1
gulp-autoprefixer
.1
> 1%, last 2 versions, Firefox ESR, Opera 12.1
Вступление было достаточно долгим и подробным - это потому, что модуль
интересный и нужный. Приступаю к его установке:1
gulp-autoprefixer
Создаю задачу
с описанием того, что нужно отслеживать изменения в файле 1
autoprefixer
и при добавлении в него CSS3-свойств преобразовывать их в свойства с браузерными префиксами. При этом учитывать только две последние версии браузеров и результат помещать по пути 1
css/style.css
.1
build/css/
Внесу в файл
CSS3-свойство 1
css/style.css
, которое заведомо нужно использовать с префиксами (для этого я заранее “подглядел” его на “Can I Use”):1
transform
Запускаю задачу
и смотрю результат:1
autoprefixer
Все четко - под условие “не ниже второй версии” попали только браузеры на движке Webkit - можно свериться здесь.
Можно немного “углубить” условие и “опуститься” до третьей версии всех браузеров:
… и посмотреть результат:
Вывод в
красивый благодаря 1
build/css/style.css
, который можно и отключить, установив 1
cascade
.1
cascade: false