Gulp.js - Gulp.js
Эта статья поднимает множество проблем. Пожалуйста помоги Улучши это или обсудите эти вопросы на страница обсуждения. (Узнайте, как и когда удалить эти сообщения-шаблоны) (Узнайте, как и когда удалить этот шаблон сообщения)
|
Разработчики) | Эрик Шоффстолл |
---|---|
изначальный выпуск | 26 сентября 2013 г.[1] |
Стабильный выпуск | 4.0.2 / 6 мая 2019[2] |
Репозиторий | |
Платформа | Кроссплатформенность |
Доступно в | JavaScript |
Тип | Инструментарий |
Лицензия | Лицензия MIT[3] |
Интернет сайт | gulpjs |
глоток является Открытый исходный код JavaScript инструментарий, созданный Эриком Шоффстоллом[4] используется как потоковое система сборки (похоже на более ориентированный на пакеты Делать ) в интерфейсная веб-разработка.
Это бегун задач, построенный на Node.js и npm, используется для автоматизации трудоемких и повторяющихся задач, связанных с веб-разработкой, таких как минификация, конкатенация, очистка кеша, модульное тестирование, линтинг, оптимизация и др.[5]
gulp использует подход «код поверх конфигурации» для определения своих задач и полагается на свои небольшие одноцелевые плагины для их выполнения. Экосистема gulp включает более 3500 таких плагинов.[6]
Обзор
глоток[7] это инструмент сборки на JavaScript, основанный на потоки узлов. Эти потоки облегчают подключение файловых операций через трубопроводы.[8] gulp читает файловую систему и передает данные из одного специализированного плагина в другой через .трубка()
оператор, выполняющий одну задачу за раз. Исходные файлы не изменяются, пока не будут обработаны все плагины. Его можно настроить как на изменение исходных файлов, так и на создание новых. Это дает возможность выполнять сложные задачи за счет связывания многочисленных плагинов. Пользователи также могут писать свои собственные плагины для определения своих задач.[9] В отличие от других исполнителей задач, которые запускают задачи по конфигурации, gulp требует знания JavaScript и программирования для определения своих задач. gulp - это система сборки, которая означает, что помимо выполнения задач, она также способна копировать файлы из одного места в другое, составление, развертывание, создание уведомлений, модульное тестирование, линтинг и т. д.[4]
Нужен исполнитель задач
Task-runners, такие как gulp и Ворчание построены на Node.js, а не npm, потому что базовые сценарии npm неэффективны при выполнении нескольких задач, хотя некоторые разработчики предпочитают npm сценарии, поскольку они могут быть простыми и легкими для реализации, существует множество способов, в которых gulp и Grunt имеют преимущество друг перед другом и скриптами, предоставленными по умолчанию.[10] Grunt запускает задачи, преобразовывая файлы и сохраняя их как новые во временных папках, а вывод одной задачи используется как ввод для другой и так далее, пока вывод не достигнет папки назначения. Это включает в себя множество Ввод / вывод вызовы и создание множества временных файлов. В то время как gulp проходит через файловую систему и не требует ни одного из этих временных местоположений, уменьшая количество вызовов ввода-вывода, тем самым улучшая производительность.[11] Grunt использует файлы конфигурации для выполнения задач, тогда как gulp требует, чтобы его файл сборки был закодирован. В Grunt каждый плагин необходимо настроить так, чтобы его входное расположение соответствовало выходным данным предыдущего плагина. В gulp плагины автоматически распределяются по конвейеру.[8]
Операция
Задачи gulp запускаются из Интерфейс командной строки (CLI)[10] оболочка и требуется два файла, package.json
, который используется для перечисления различных плагинов для gulp, и gulpfile.js
(или просто gulpfile
), Они, согласно соглашению о средствах сборки, часто находятся в корневом каталоге исходного кода пакета. Файл gulpfile содержит большую часть логики, необходимой gulp для выполнения задач сборки. Сначала загружаются все необходимые модули, а затем в gulpfile определяются задачи. Все необходимые плагины, указанные в gulpfile, перечислены в разделе devDependencies файла[12] Задача по умолчанию запускается $ глоток
. Отдельные задачи могут быть определены в gulp.task и выполняются gulp <задача> <другая задача>
.[13] Сложные задачи определяются путем объединения плагинов с помощью .трубка()
оператор.[14]
Анатомия gulpfile
gulpfile - это место, где все операции определены в gulp. Основная анатомия gulpfile состоит из необходимых плагинов, включенных вверху, определения задач и задачи по умолчанию в конце.[15]
Плагины
Любой установленный плагин, необходимый для выполнения задачи, должен быть добавлен в начало файла gulp в качестве зависимости в следующем формате.[13][14]
// Добавляем зависимостивар глоток = требовать ('глоток');
Задачи
После этого можно создавать задачи. Задача gulp определяется gulp.task и принимает имя задачи в качестве первого параметра и функцию в качестве второго параметра.
В следующем примере показано создание задач gulp. Первый параметр taskName является обязательным и указывает имя, под которым может выполняться задача в оболочке.[16]
глоток.задача('taskName', функция () { //сделай что-нибудь});
В качестве альтернативы можно создать задачу, которая выполняет несколько предопределенных функций. Эти функции передаются вторым параметром в виде массива.
функция fn1 () { // сделай что-нибудь}функция fn2 () { // сделай что-нибудь}// Задача с массивом имён функцийглоток.задача('taskName', глоток.параллельно(fn1, fn2));
Задача по умолчанию
Задача по умолчанию должна быть определена в конце gulpfile. Это может быть запущено глоток
команда в оболочке. В приведенном ниже случае задача по умолчанию ничего не делает.[14]
// Задача Gulp по умолчаниюглоток.задача('дефолт', fn);
Задача по умолчанию используется в gulp для автоматического запуска любого количества зависимых подзадач, определенных выше, в последовательном порядке. gulp также может отслеживать исходные файлы и запускать соответствующую задачу при внесении изменений в файлы. Подзадачи следует указать как элементы массива во втором параметре. Процесс можно запустить, просто запустив задачу по умолчанию с помощью глоток
команда.[15]
Примеры задач
Изображение Задача
Определение модуля может быть в начале Gulpfile.js
вот так:
вар imagemin = требовать('глоток-изображениемин');
Последующая задача изображения оптимизирует изображения. gulp.src ()
извлекает все изображения с расширением .png, .gif или .jpg в каталоге 'изображения-ориг / '.
.pipe (imagemin ())
направляет найденные изображения через процесс оптимизации и с .pipe (gulp.dest ())
оптимизированные изображения сохраняются в 'images / 'папка. Без gulp.dest ()
изображения действительно будут оптимизированы, но не сохранены.[17] Поскольку оптимизированные изображения сохраняются в другой папке, исходные изображения остаются неизменными.[14]
// Задача изображенийглоток.задача('изображений', функция () { возвращаться глоток.src('images / *. {png, gif, jpg}') .труба(imagemin()) .труба(глоток.dest('dist / images /'));});
Задача сценариев
В следующем примере все файлы JavaScript из каталога скрипты / оптимизированы с .pipe (uglify ())
и gulp.dest ('скрипты /')
перезаписывает исходные файлы выходными данными.[18] Для этого нужно сначала вернуться к требуемому плагин gulp-uglify[19] на npm установщик пакетов и в начале gulpfile, модуль должен быть определен.
// Задача скриптаглоток.задача('скрипты', функция () { возвращаться глоток.src('скрипты / *. js') .труба(уродовать()) .труба(глоток.dest('скрипты /'));});
Посмотреть задачу
Задача Watch служит для реагирования на изменения в файлах. В следующем примере задачи с именами скрипты и изображений вызываются при изменении любого из файлов или изображений JavaScript в указанных каталогах.[20]
// Повторно запускаем задачу при изменении файлаглоток.задача('смотреть', функция (cb) { глоток.смотреть('скрипты / js / **', скрипты); глоток.смотреть('изображений/**', изображений); cb();});
Кроме того, можно выполнить обновление содержимого браузера с помощью задач Watch.[21] Для этого есть множество опций и плагинов.
Рекомендации
- ^ https://libraries.io/npm/gulp
- ^ "глоток изменений". Получено 2019-05-06.
- ^ «Лицензия на github.com». Получено 2016-05-30.
- ^ а б Джед Мао; Максимилиан Шмитт; Томаш Стрыевски; Кэри Кантри Холт; Уильям Любельски (2014). Разработка Gulp Edge (1-е изд.). Bleeding Edge Press. ISBN 978-1-939902-14-6.
- ^ "Building With Gulp - Smashing Magazine". Smashingmagazine.com. Получено 2016-12-14.
- ^ "реестр плагинов gulp.js". Gulpjs.com. Получено 2016-12-14.
- ^ "глоток / глоток". GitHub. Получено 2016-09-22.
- ^ а б "Подстек / поток-справочник: как писать программы узла с потоками". GitHub. Получено 2016-12-14.
- ^ "глоток / глоток". GitHub. Получено 2016-09-22.
- ^ а б "глоток / глоток". GitHub. Получено 2016-09-23.
- ^ «Глоток для начинающих». CSS-хитрости. 2015-09-01. Получено 2016-12-14.
- ^ "install | npm Documentation". docs.npmjs.com. Получено 2016-09-22.
- ^ а б "глоток / глоток". GitHub. Получено 2016-09-23.
- ^ а б c d Мейнард, Трэвис (2015). Начало работы с Gulp. Packt Publishing Ltd. ISBN 9781784393472.
- ^ а б «Введение в Gulp.js - SitePoint». 2014-02-10. Получено 2016-09-23.
- ^ "gulp / API.md в 4.0 · gulpjs / gulp · GitHub". GitHub. 2016-05-12. Получено 2016-12-14.
- ^ "Durchstarten mit Gulp.js - Оптимизация веб-сайтов, автоматизация Arbeitsabläufe". Magazin.phlow.de. 2014-05-25. Получено 2016-12-14.
- ^ «Интерфейсный процесс с Gulp - Лихтенекер». Liechtenecker.at. 2015-05-29. Получено 2016-12-14.
- ^ "глотнуть-углифить". Npmjs.com. Получено 2016-12-14.
- ^ "глоток-смотреть". Npmjs.com. Получено 2016-09-23.
- ^ "Browsersync + Gulp.js". Browsersync.io. Получено 2016-12-14.
Литература
- Джед Мао; Максимилиан Шмитт; Томаш Стрыевски; Кэри Кантри Холт; Уильям Любельски (2014). Разработка Gulp Edge (1-е изд.). Bleeding Edge Press. ISBN 978-1-939902-14-6.
- Ден Оделл (2014). «Инструменты сборки и автоматизация». Кодирование, возможности и инструменты для разработки на языке Pro JavaScript. Апресс. ISBN 978-1-4302-6268-8.
- Мейнард, Трэвис (2015). Начало работы с Gulp. Packt Publishing Ltd. ISBN 9781784393472.