отредактируем наш исходный код:
var gulp = require('gulp'); | |
gulp.task('mytask', function() { | |
console.log('Привет, я Task!'); | |
}); | |
Теперь давайте сделаем что-нибудь по сложнее:
var gulp = require('gulp'); | |
gulp.task('mytask', function() { | |
return gulp.src('source-files') | |
.pipe(plugin()) | |
.pipe(gulp.dest('folder')) | |
}); | |
return - возвращает функцию |
|
'source-files' - мы взяли какие то файлы |
|
gulp.src - базовая функция обрабатывает то, что в скобках 🙄 |
|
.pipe - вызов какой то команды или плагина | |
dest - от destination (место назначение) | |
т.е. берем файл → что то делаем с ним → и выводим результат - это и есть задача gulp
Это был просто пример) - он не рабочий - а учебный.
А теперь сделаем что-нибудь полезное. 🙂
Сделаем препроцессинг sass
, установим пакет galp sass
с сохранением версии в package.json
.
Вообще любые gulp-пакеты - для любых задач - они легко гугляться.
Давайте установим sass.
Т.е. с сохранением версии пакета в package.json
Начнется установка sass:
galp-sass установлен!
Дальше мы подключаем плагин sass
А кстати, переменные для подключения - можно перечислять через запятую.
var gulp = require('gulp'); | |
sass = require('gulp-sass'); - подключаем sass-пакет, который установили сейчас. | |
}); | |
перейдем в папочку app
→ sass
и создадим тут файл main.sass
И давайте напишим код в нем.
Например, зададим бэкграунд для body
Перейдем в gulpfile.js
и напишим Таск
Сохраним наш файл gulpfile.js
И перейдем в папку app
И запустим terminal из этой папки
Выполним таск:
И получим результат Автоматической КОМПИЛЯЦИИ SASS → CSS
Познакомимся с выборкой файлов:
Здесь она простая (указан файл на прямую)
return gulp.src('app/sass/main.sass') |
Но ФАЙЛЫ также можно выбирать по шаблону Glob
Это шаблон для работы с файлами выборки во многих отраслях.
Так, самые распространенные шаблоны, например:
var gulp = require('gulp'), | |
sass = require('gulp-sass'); | |
gulp.task('sass', fuction() ) { | |
return gulp.src('app/sass/main.sass') | |
.pipe(sass()) | |
.pipe(gulp.dest('app/css')) | |
}); | |
Шаблон: В этом случае не важно какое будет имя у файла - главное, что бы расширение было sass .
Т.е. выберем все файлы с расширением sass в директории sass.
/**/ - директория-под-директория, т.е. таким шаблоном мы выбираем малого того что все файлы *.sass директории sass
но еще в любом количестве директорий - мы выбираем все файлы - не важно какая будет стрктура - все что находится в
app/sass - все у нас будет выбираться.
Тут все файлы *.js
будут выбираться.
Восклицательный знак означает - что выборка файла main.sass
исключиться из выборки.
Т.е. все файлы - кроме этого - будут обрабатываться.
Или же, как массив.
Таким образом - мы выбирем все файлы sass
кроме
main.sass
Еще шаблон выборки:
Таким образом - мы выбираем все scss
и все sass
файлы в директории sass
А если так написать:
То мы выбираем не только в диретории sass
, но и во всех поддиректориях.
Но нас устроит и проще:
отступление:
Если мы в папке app/sass
создадим файл:
Файлы - имя которых начинается с подчеркивания - они не участвуют в компиляции как отдельные файлы - а добавляются только импортом.
Т.е. их можно импортировать в sass - через импорт:
Давайте откроем для примера файл:
И напишем в нем:
и импортируем его в main.sass
Выполним таск sass
в терминале
и перейдя в файл main.css
увидим
ВСЕ ИЗМЕНЕНИЯ ФАЙЛИКАХ ( _part.sass , main.sass , gulpfile.js , ) СОХРАНЯТЬ
Т.е. файлик _part.sass не компилируется, а импортируется как заплатка.
Логично было бы сделать наблюдение за изменениями в файлах. Т.е. если мы вносим какие то изменения в файлах, то у нас должны выполнятся таски
Т.е. если мы изменяем sass файл - то он должен автоматически компилироваться.
Для этого:
Gulp поддерживает метод wath - для проверки сохраняемых файлов - и имеет простой синтаксис.
Создадим таск - который будет следить за файлами scss
Допишим в файл gulpfile.js
Всегда начинаем с gulp.task();
watch - название таска, который следит за изменениями файлов.
Выполняем function() gulp.watch('');
и что собственно watch ! а следить будем по нашему шаблону:
'app/sass/**/*.sass' и еще массив тасков, которые мы будем выполнять - в нашем случае это sass .
С О Х Р А Н Я Е М
var gulp = require('gulp');
sass = require('gulp-sass');
gulp.task('sass', function() {
return gulp.src('app/sass/**/*.sass')
.pipe(sass())
.pipe(gulp.dest('app/css'))
} );
gulp.task('watch', function(){
gulp.watch('app/sass/**/*.sass', ['sass']);
})
Давайте выполним наш таск watch в консоли
И у нас начался процесс ВОТЧИНГА ( слежения )
Давайте изменим что-нибудь в файле main.sass
Автоматически компилируется в файл : main.css
ОК! - Работает!
Давайте перейдем теперь в папку
И откроем index.html и сделаем базовую разметку:
Подключим link
И напишим какой то lorem
И было бы не плохо сделать автоматическое обновление css на странице - при сохранении.
Для этого, используем инструмент, который запустит сервер
(запустит сервер) и обеспечит нам слежение
за файлами и автоматическим обновлением ( Life reload )
Для Life reload мы будем использовать браузер synk
Причем reload будет происходить не только в одном браузере, но и во всех браузерах сети:
Мобильные устройства
и любые компьютеры в одной WiFi-сети
npm install -g browser-sync
Но мы не будем устанавливать его глобально, а установим его в папку проекта
myproject
Но сначала - выйдем из watching
Перейдем в консоль:
И нажмем 2 раза Ctrl + C
Давайте установим browser sync
npm i browser-sync --save-dev
Идет установка
УСТАНОВКА bowser sync ЗАВЕРШЕНА!
Видим что он появился в
открываем
gulpfile.js
и подключаем browser sync
и подровняем все знаки равно =
Создаем таск для browser sync
Задавая 1-й параметр , давайте выберем папку - которая будет сервером
Путь это будет папка app
Давайте выполним таск browser sync
gulp browser-sync
Отключаем уведомления в browser sync
Теперь наша связка live reload настроена, а именно:
Если файл main.sass
- изменяется,
то автоматом постится измененный main.css
в index.html
Происходит именно ижект main.css
в дом дерева - и автоматически применяются css - правила
Это позволяет намного быстрей применять изменения!
Давайте, немного модифицируем наш таск sass
И в приципе - можно запускать!
Мы запускаем - именно tast watch
,
который включает browser sync
и включает sass
Т.е. - будем вотчить ( следить ) файлы sass
Переходим в консоль:
Для начала - ВЫКЛЮЧИМ НАШ СЕРВЕР
И введем: gulp watch
И запуститился браузер:
Давайте разберем консоль:
И сходим в User Interface : 3001
Мы здесь ничего не меняем - тут и так все хорошо работает!
Давайте попробуем изменить что-нибудь в main.sass