Сегодня рассмотрим еще один очень нужный и полезный плагин для web-разработчика. Это плагин
под Gulp, который должен иметь каждый веб-разработчик в своей копилке.
1 gulp-livereload
Суть плагина
в автоматизации обновления страниц в окне браузера. Это тоже самое, что и связка - плагин LiveReload под Sublime Text + плагин LiveReload под браузер. Но в данном случае получается связка - плагин 1
gulp-livereload
+ плагин LiveReload под браузер.1
gulp-livereload
Сказать честно, предыдущий опыт настройки LiveReload, описанный в этой статье - “Установка LiveReload в Sublime Text 2” меня полностью не удовлетворял и я им не пользовался. Причина заключалась в том, что иногда эта связка работала, а иногда - почему-то нет. Нестальность работы плагина под Sublime Text (у меня) отбивала всякое желание иметь с ним дело.
А вот связка плагин
+ плагин LiveReload под браузер работает стабильно. Кроме того, если Node.js + Gulp уже настроен для текущего проекта, то не возникает никакой проблемы в установке дополнительного плагина 1
gulp-livereload
.1
gulp-livereload
Установка плагина gulp-livereload
Плагин
проживает по указанному адресу - gulp-livereload. Установка в проект производиться командой:1
gulp-livereload
$ npm install --save-dev gulp-livereload
В виде зависимостей проекта запись в файле
должна выглядеть (как минимум) так:1
package.json
{
"name": "test",
"version": "0.0.1",
"devDependencies": {
"gulp": "~3.8.7",
"gulp-livereload": "~2.1.1"
}
}
Добавляем переменную
в файл 1
livereload
для инициализации плагина 1
gulpfile.js
и дальнейшей работы с ним:1
gulp-livereload
var gulp = require('gulp'),
livereload = require('gulp-livereload');
Установка плагина LiveReload под браузер
Следующим шагом будет установка расширения LiveReload под браузер. В моем случае это будет Mozilla Firefox, однако расширение LiveReload существует и под два других популярных браузера - Google Chrome и Safari.
Для установки расширения под Firefox не стоит искать его на странице расширений Mozilla - LiveReload 0.6.4. Там находится устаревшая версия плагина, которая наверняка не подойдет для вашего браузера.
Лучше посетим домашнюю страницу проекта LiveReload с описанием установки расширений под каждый из браузеров - How do I install and use the browser extensions. Скачиваем по указанной на странице ссылке расширение под нужный браузер (Firefox) и автоматически устанавливаем его.
На панели инструментов браузера появиться значок плагина LiveReload в виде круга из двух стрелок. Однократное нажатие на значок запускает плагин - он принимает вид, похожий на компас со стрелкой. Еще одно нажатие выключает плагин LiveReload.
Создание задачи под gulp-livereload
В принципе, плагин
не требует для себя создания отдельной задачи. Все, что нужно для него - это запуск его как локального сервера. Если вы скажете, что не устанавливали сервер LiveReload, то могу успокоить вас - устанавливали! Инсталляция плагина 1
gulp-livereload
подразумевает автоматическую установку сервера LiveReload.1
gulp-livereload
Поэтому нам нужно всего лишь предварительно активировать, запустить его. Кстати, если у вас вдруг при попытке включения плагина LiveReload в браузере появляется окно с такой ошибкой:
… то это говорит всего лишь о том, что перед этим не был запушен в консоли сам сервер LiveReload. Для этого я создам задачу
, внутрь которой помещу вызов функции 1
watch
:1
livereload()
// Watch Task
gulp.task('watch', function(){
livereload.listen();
gulp.watch('sass/*.scss', ['sass']).on('change', livereload.changed);
});
Все - мне больше ничего не нужно дописывать для задачи компилирования из Sass в CSS (эта задача приведена здесь в качестве примера использования плагина
):1
gulp-livereload
// Sass Complie Task
gulp.task('sass', function(){
gulp.src('sass/*.scss')
.pipe(sassSCSS())
.pipe(gulp.dest('build/css'));
});
Полностью листинг файла
в данном случае будет выглядеть таким образом:1
gulpfile.js
var gulp = require('gulp'),
sassSCSS = require('gulp-sass'),
minifyHTML = require('gulp-minify-html'),
rename = require('gulp-rename'),
livereload = require('gulp-livereload');
// Default Task
gulp.task('default', ['sass', 'watch']);
// Watch Task
gulp.task('watch', function(){
livereload.listen();
gulp.watch('sass/*.scss', ['sass']).on('change', livereload.changed);
});
// Sass Complie Task
gulp.task('sass', function(){
gulp.src('sass/*.scss')
.pipe(sassSCSS())
.pipe(gulp.dest('build/css'));
});
Все готово для тестирования работы плагина
.1
gulp-livereload
Тестирование плагина gulp-livereload
Осталось выполнить две маленькие вещи. Первая - включаю плагин LiveReload в браузере. Вторая - запускаю Gulp для мониторинга изменений и работы плагина
:1
gulp-livereload
$ gulp
Using gulpfile ~/Projects/gulp_test/gulpfile.js
Starting 'sass'...
Finished 'sass' after 11 ms
Starting 'watch'...
Finished 'watch' after 17 ms
Starting 'default'...
Finished 'default' after 19 μs
Live reload server listening on: 35729
Видим, как последняя строка в консоли говорит нам, что сервер LiveReload запустился и прослушивает порт по умолчанию - 35729. Вношу изменения в файл стилей
:1
style.scss
figure{
border: 1px solid #000;
padding: 5px;
}
… и смотрю на вывод в консоли:
$ gulp
Using gulpfile ~/Projects/gulp_test/gulpfile.js
Starting 'sass'...
Finished 'sass' after 10 ms
Starting 'watch'...
Finished 'watch' after 15 ms
Starting 'default'...
Finished 'default' after 11 μs
Live reload server listening on: 35729
style.scss was reloaded.
Starting 'sass'...
Finished 'sass' after 3.58 ms
Изменение было отслежено, файл перекомпилирован задачей
. А что же плагин 1
sass
- он тоже подхватил изменения?1
gulp-livereload
Смотрим:
О, да! Изменение было подхвачено плагином
- “картинка” в окне браузера изменилась без перезагрузки последнего.1
gulp-livereload
Еще раз проверим и внесем какое-нибудь изменение в файле стилей:
$ gulp
Using gulpfile ~/Projects/gulp_test/gulpfile.js
Starting 'sass'...
Finished 'sass' after 10 ms
Starting 'watch'...
Finished 'watch' after 15 ms
Starting 'default'...
Finished 'default' after 11 μs
Live reload server listening on: 35729
style.scss was reloaded.
Starting 'sass'...
Finished 'sass' after 3.58 ms
style.scss was reloaded.
Starting 'sass'...
Finished 'sass' after 1.97 ms
Отлично! Вот мы и изучили еще одну полезную сторону работы с Gulp - использование плагина
.1
gulp-livereload