В предыдущей статье “Gulp - знакомство и первый запуск”” мы познакомились с установкой менеджера Gulp и запуском первой задачи под него. В этой статье мы перейдем к еще более интересному материалу, в котором узнаем, как устанавливать и запускать плагины под Gulp на примере одного из них - gulp-uglify.
Как я уже упоминал ранее, Gulp имеет модульную структуру. Под Gulp, несмотря на молодость проекта, уже написано достаточное количество плагинов. Конечно, оно не сравниться с огромной коллекцией таковых под мега-популярный Grunt, но для большинства случаев жизни уже сейчас их хватит.
Каждый из плагинов - это код, решающий только одну задачу. Например, один плагин умеет сжимать изображения, другой сжимает js-файлы, третий сжимает css-файлы; еще один умеет компилировать scss-файлы в css-файлы. И так далее - список можно продолжать и продолжать.
Становиться понятно, что для конкретной задачи нам нужно установить нужный плагин и создать задачу (task) в файле
. А затем запустить Gulp на выполнение этой задачи. Конечно, задач может быть не одна, а несколько. Все зависит о того, какие именно задачи нам необходимо выполнять.1
gulpfile.js
Давайте рассмотрим процесс установки плагинов и настройки задач на примере одного из них -
. Данный плагин служит для минификации js-файлов - он удаляет пробелы, запятые, точки с запятой. В результате js-файл получается меньшим по размеру.1
gulp-uglify
Все плагины под Gulp размещены по этому адресу - Gulp Plugins. В строке поиска нужно вводить имя искомого плагина, в результате получаем (или не получаем) страницу с описанием плагина и командой для его установки.
Устанавливаем gulp-uglify под Gulp
На странице плагина gulp-uglify описана команда установки этого плагина, которую мы повторим для себя, в своем проекте:
Опять таки, ключ
“говорит” менеджеру 1
--save-dev
добавить плагин 1
npm
в качестве зависимости в файл 1
gulp-uglify
:1
package.json
Создаем задачу gulp-uglify под Gulp
Плагин
установлен и теперь самое время прописать в файле 1
gulp-uglify
именованную задачу (named task) под него. Надеюсь, уважаемый читатель помнит о двух типах задач под Gulp, описанных в предыдущей статье “Gulp - знакомство и первый запуск”.1
gulpfile.js
Открываем файл
в редакторе кода (у меня это Sublime Text) и вносим туда следующие строки:1
gulpfile.js
В принципе, можно и не вводить вышеприведенные строки вручную, а просто скопировать их со страницы описания плагина gulp-uglify. Они размещены в блоке с заголовком Usage.
Но это не главное. Важнее разобраться, что из себя представляет каждая из этих строк. Так вот, строка
- это создание переменной с именем 1
uglify = require('gulp-uglify')
, в которую помещается плагин 1
uglify
. Обратите внимание на синтаксис этой строки и ее табуляцию - оба аспекта важны и их несоблюдение приведет к тому, что Gulp не будет работать. По большому счету, можно написать и так - 1
gulp-uglify
, но предыдущая запись является более правильной.1
var uglify = require('gulp-uglify');
Далее идут строки для новой именованной задачи для Gulp. Имя задачи задаем произвольно и пусть оно будет таким -
. В теле callback-функции пропишем директорию, содержимое которой Gulp должен отслеживать - 1
gulp-uglify
. В данном случае указываем, что Gulp должен следить за изменениями всех файлов с расширением .js, расположенных внутри директории 1
gulp.src('js/*.js')
.1
js
Следующая строка
получает в виде потока содержимое директории 1
.pipe(uglify())
и обрабатывает его с помощью плагина 1
js
, помещенного внутрь переменной 1
gulp-uglify
. Результат обработки передается в виде потока в строку 1
uglify
, которая сохраняет его по пути 1
.pipe(gulp.dest('build/js'))
.1
build/js
Вот мы и разобрали суть задачи в Gulp! Ведь ничего сложного, правда?!
Запускаем задачу gulp-uglify в Gulp
Переходим от слов к делу и запустим на выполнение только что созданную нами задачу
. Не забываем, что именованные задачи в Gulp запускаются с указанием их имени:1
gulp-uglify
Вуаля! Видим (по аналогии с предыдушим опытом запуска дефолтной задачи), что именованная задача
успешно запустилась, выполнилась за 12 миллисекунд и также успешно завершилась. По идее, теперь по пути 1
gulp-uglify
у нас должен располагаться минифицированный js-файл (в моем случае это был 1
build/js
).1
jquery-1.11.1.js
Посмотрим и видим, что так оно и есть, файлик
помещен туда, куда мы и прописывали:1
jquery-1.11.1.js
А точно ли он минифицированный? Это легко проверить - открываем его в Sublime Text и наблюдаем такую картину:
Полезные плагины под Gulp
Мы успешно установили и запустили плагин под Gulp - можно в очередной раз поздравить себя! В данном случае это был плагин
для минификации js-файлов.1
gulp-uglify
Однако, как можно догадаться, существует большое количество других полезных плагинов. Все они устанавливаются и настраиваются точно также, как и рассмотренный нами
.1
gulp-uglify
Ниже я приведу примерный список наиболее полезных плагинов под Gulp, существующих на сегодняшний день:
// минификация HTML-файлов1
gulp-minify-html
// минификация CSS-файлов1
gulp-minify-css
// еще один плагин минификации CSS-файлов1
gulp-csso
// минификация JS-файлов1
gulp-uglify
// компиляция SCSS-файлов в CSS-файлы1
gulp-sass
// компиляции SCSS-файлов в CSS-файлы, более стабильный1
gulp-ruby-sass
// конкатенация (соединение нескольких файлов в один файл)1
gulp-concat
// ???1
gulp-jshint
// запуск плагина LiveReload1
gulp-livereload
// мониторинг файлов в фоновом режиме в Gulp1
gulp-watch
// вывод окна с уведомлением о событиях в Gulp1
gulp-notify
// сжатие изображений в Gulp1
gulp-imagemin
// переименование файлов в Gulp1
gulp-rename
// настройка обработки ошибок в Gulp1
gulp-plumber