Содержание
Что такое плагины Gulp
Базовый функционал Gulp достаточно ограничен. По сути, Gulp умеет просто брать какие-то файлы, определять их точку входа, определять точку выхода и соответственно копировать эти файлы.
Если мы с вами хотим, чтобы Gulp умел делать еще что-то дополнительно, базовым функционалом здесь не обойтись. Система Gulp разрабатывалась модульно. У нее есть так называемые модули или их ещё называют плагинами
Это некие расширения, которые мы можем добавить внутрь нашего Gulp и, соответственно, научить эту систему делать какой-то определенный набор действий.
Эти модули пишут программисты. Если мы с вами посмотрим на официальный сайт Gulp, здесь есть раздел Plugins. Это раздел, где публикуются эти самые плагины. Если нам нужно что-то сделать, обработать каким-то образом файлы, нам нужно найти соответствующий плагин, который умеет это делать.
Существует достаточно много плагинов. Они постоянно добавляются. Мы можем как-то с ними работать.
В зависимости от того, какая у нас задача, мы можем найти какой-то плагин, который может решить эту задачу. Например, нам нужно решить задачу обработки sass файлов, мы можем набрать здесь sass и посмотреть какие решения у нас здесь есть.
Мы можем перейти на официальную страницу каждого плагина и посмотреть описание, что делает тот или иной плагин, как его использовать. Как вы видите эти плагины представляют собой обычный пакет пакетного менеджера npm.
По сути, любой плагин устанавливается, как модуль в наши нашу папку node_modules. Обратите внимание, что все пакеты, которые здесь есть начинаются с gulp. Модули, которые мы будем устанавливать для gulp их нельзя использовать вне Gulp.
Модули которые написаны специально для Gulp, могут работать только с ним. Также модули можно найти и через поисковую систему. Подробнее, см. видео.
Что такое плагины Gulp, где и как их искать мы рассмотрели. А в следующем видео мы уже посмотрим на практике, как мы можем установить тот или иной Gulp плагин и как можно подключить его к нашему проекту.
Gulp — Полезные плагины — CoderLessons.com
Gulp предоставляет несколько полезных плагинов для работы с HTML и CSS, JavaScript, графикой и некоторыми другими вещами, как описано в следующих таблицах.
HTML & CSS плагины
Sr.No. | Плагин и описание |
---|---|
1 | autoprefixer Он автоматически включает префиксы к свойствам CSS. |
2 | глотка-браузер-синхронизация Он используется для просмотра всех файлов HTML и CSS в каталоге CSS и выполняет прямую перезагрузку страницы во всех браузерах при каждом изменении файлов. |
3 | Глоток-useref Он используется для замены ссылок на неоптимизированные скрипты или таблицы стилей. |
4 | Глоток-электронный дизайн Он создает шаблоны электронной почты в формате HTML, которые преобразуют стили CSS во встроенные. |
5 | проглатывать-uncss Он оптимизирует CSS-файлы и находит неиспользуемые и дублированные стили. |
6 | Глоток-csso Это оптимизатор CSS, который минимизирует CSS-файлы, что приводит к меньшему размеру файла. |
7 | Глоток-htmlmin Это минимизирует файлы HTML. |
8 | Глоток-csscomb Он используется для создания стиля для CSS. |
9 | Глоток-csslint Указывает CSS-линтер. |
10 | Глоток-htmlhint Он определяет валидатор HTML. |
Он автоматически включает префиксы к свойствам CSS.
Он используется для просмотра всех файлов HTML и CSS в каталоге CSS и выполняет прямую перезагрузку страницы во всех браузерах при каждом изменении файлов.
Он используется для замены ссылок на неоптимизированные скрипты или таблицы стилей.
Он создает шаблоны электронной почты в формате HTML, которые преобразуют стили CSS во встроенные.
Он оптимизирует CSS-файлы и находит неиспользуемые и дублированные стили.
Это оптимизатор CSS, который минимизирует CSS-файлы, что приводит к меньшему размеру файла.
Это минимизирует файлы HTML.
Он используется для создания стиля для CSS.
Указывает CSS-линтер.
Он определяет валидатор HTML.
Плагины JavaScript
Sr.No. | Плагин и описание |
---|---|
1 | Глоток-autopolyfiller Это то же самое, что autoprefixer, который включает в себя необходимые полифилы для JavaScript. |
2 | Глоток-jsfmt Он используется для поиска определенных фрагментов кода. |
3 | проглатывать-акционерные общества Используется для проверки стиля кода JavaScript. |
4 | Глоток-Modernizr Он указывает, какие функции HTML, CSS и JavaScript может предложить браузер пользователя. |
5 | глотка-экспресс Запускает веб-сервер gulp express.js. |
6 | проглатывать-requirejs Он использует require.js, чтобы объединить модули AMD require.js в один файл. |
7 | Глоток-Plato Он генерирует отчеты анализа сложности. |
8 | Глоток-сложность Он анализирует сложность и ремонтопригодность кода. |
9 | fixmyjs Это исправляет результаты JSHint. |
10 | Глоток-jscpd Он используется в качестве детектора копирования / вставки для исходного кода. |
11 | Глоток-jsonlint Это валидатор JSON. |
12 | проглатывать-уродовать Это минимизирует файлы JavaScript. |
13 | Глоток-CONCAT Он объединяет файлы CSS. |
Это то же самое, что autoprefixer, который включает в себя необходимые полифилы для JavaScript.
Он используется для поиска определенных фрагментов кода.
Используется для проверки стиля кода JavaScript.
Он указывает, какие функции HTML, CSS и JavaScript может предложить браузер пользователя.
Запускает веб-сервер gulp express.js.
Он использует require.js, чтобы объединить модули AMD require.js в один файл.
Он генерирует отчеты анализа сложности.
Он анализирует сложность и ремонтопригодность кода.
Это исправляет результаты JSHint.
Он используется в качестве детектора копирования / вставки для исходного кода.
Это валидатор JSON.
Это минимизирует файлы JavaScript.
Он объединяет файлы CSS.
Модульные тесты Плагины
Sr.No. | Плагин и описание |
---|---|
1 | Глоток-nodeunit Он запускает модульные тесты узлов из Gulp. |
2 | Глоток-жасмин Он используется для сообщения о проблемах, связанных с выходом. |
3 | Глоток-QUnit Он обеспечивает базовый вывод консоли для тестов QUnit и использует модуль узла PhantomJS и подключаемый модуль PhnomJS для запуска. |
4 | Глоток-мокко Он определяет тонкую оболочку вокруг Мокки и запускает тесты Мокки. |
5 | Глоток-карма Это было объявлено устаревшим в Gulp. |
Он запускает модульные тесты узлов из Gulp.
Он используется для сообщения о проблемах, связанных с выходом.
Он обеспечивает базовый вывод консоли для тестов QUnit и использует модуль узла PhantomJS и подключаемый модуль PhnomJS для запуска.
Он определяет тонкую оболочку вокруг Мокки и запускает тесты Мокки.
Это было объявлено устаревшим в Gulp.
Графические плагины
Sr.No. | Плагин и описание |
---|---|
1 | gulpicon Он генерирует спрайты из SVG и конвертирует их в PNG. |
2 | Глоток-iconfont Он используется с веб-шрифтами для создания файлов WOFF, EOT, TTF из SVG. |
3 | Глоток-imacss Он преобразует файлы изображений в URI данных и помещает их в один файл CSS. |
4 | глоток реагирующим Он генерирует адаптивные изображения для разных устройств |
5 | проглатывать острые Он используется для изменения и изменения размера ориентации и фона изображения. |
6 | Глоток-svgstore Он объединяет файлы SVG в один с элементами <symbol>. |
7 | gulp-imagemin & gulp-tinypng Он используется для сжатия изображений, таких как PNG, JPEG, GIF, SVG. |
8 | Глоток-spritesmith Он используется для создания таблицы спрайтов из набора изображений и переменных CSS. |
Он генерирует спрайты из SVG и конвертирует их в PNG.
Он используется с веб-шрифтами для создания файлов WOFF, EOT, TTF из SVG.
Он преобразует файлы изображений в URI данных и помещает их в один файл CSS.
Он генерирует адаптивные изображения для разных устройств
Он используется для изменения и изменения размера ориентации и фона изображения.
Он объединяет файлы SVG в один с элементами <symbol>.
Он используется для сжатия изображений, таких как PNG, JPEG, GIF, SVG.
Он используется для создания таблицы спрайтов из набора изображений и переменных CSS.
Компиляторы Плагины
Sr.No. | Плагин и описание |
---|---|
1 | глоток меньше Он предоставляет LESS плагин для Gulp. |
2 | Глоток-дерзость Он предоставляет плагин SASS для Gulp. |
3 | Глоток компас Он предоставляет компас плагин для Gulp. |
4 | Глоток-стилус Используется для хранения стилуса в CSS. |
5 | Глоток кофе- Он предоставляет плагин coffeescript для Gulp. |
6 | проглатывать-рули Он предоставляет плагин руля для Gulp. |
7 | проглатывать-Jst Он предоставляет шаблоны подчеркивания в JST. |
8 | проглатывать реагируют Он определяет шаблоны JSX Facebook React в JavaScript. |
9 | проглатывать-nunjucks Он определяет шаблоны Nunjucks в JST. |
10 | проглатывать-dustjs Он определяет шаблоны пыли в JST. |
11 | глотка-угловой-templatecache Он определяет шаблоны AngularJS в templateCache. |
Он предоставляет LESS плагин для Gulp.
Он предоставляет плагин SASS для Gulp.
Он предоставляет компас плагин для Gulp.
Используется для хранения стилуса в CSS.
Он предоставляет плагин coffeescript для Gulp.
Он предоставляет плагин руля для Gulp.
Он предоставляет шаблоны подчеркивания в JST.
Он определяет шаблоны JSX Facebook React в JavaScript.
Он определяет шаблоны Nunjucks в JST.
Он определяет шаблоны пыли в JST.
Он определяет шаблоны AngularJS в templateCache.
Другие плагины
Плагин gulp-clean удаляет файлы и папки, а плагин gulp-copy копирует файлы из источника в новое место назначения.
Он запускает задания Grunt из Gulp
Он просматривает файлы всякий раз, когда вносятся изменения.
Он уведомляет об ошибке каждый раз при сбое задачи.
Это позволяет использовать команды Git.
Он создает документацию JavaScript для Gulp.
Он обеспечивает пересмотр статического ресурса для имен файлов.
Увеличивает версии в пакете JSON.
Это используется, чтобы ввести пакеты беседки.
Удаляет операторы console.log.
Он предварительно обрабатывает HTML, JavaScript и другие файлы на основе контекста или конфигурации среды.
Указывает продолжительность для задач Gulp.
Он запускает измененные файлы и новые файлы.
Он используется для запуска веб-сервера с LiveReload.
Он запускает команды Shell.
Соединяется с помощью задач SSH и SFTP.
Он сжимает файлы и папки.
Он определяет размер файла в удобочитаемом формате.
Он предоставляет утилиты для плагинов gulp.
gulp плагины и их установка в проект
var gulp = require(‘gulp’), // Подключаем Gulp
sass = require(‘gulp-sass’), //Подключаем Sass пакет
browserSync = require(‘browser-sync’), // Подключаем Browser Sync
concat = require(‘gulp-concat’), // Подключаем gulp-concat (для конкатенации файлов)
uglify = require(‘gulp-uglifyjs’), // Подключаем gulp-uglifyjs (для сжатия JS)
cssnano = require(‘gulp-cssnano’), // Подключаем пакет для минификации CSS
rename = require(‘gulp-rename’), // Подключаем библиотеку для переименования файлов
del = require(‘del’), // Подключаем библиотеку для удаления файлов и папок
imagemin = require(‘gulp-imagemin’), // Подключаем библиотеку для работы с изображениями
pngquant = require(‘imagemin-pngquant’), // Подключаем библиотеку для работы с png
cache = require(‘gulp-cache’), // Подключаем библиотеку кеширования
autoprefixer = require(‘gulp-autoprefixer’);// Подключаем библиотеку для автоматического добавления префиксов
gulp.task(‘sass’, function(){ // Создаем таск Sass
return gulp.src(‘app/sass/**/*.sass’) // Берем источник
.pipe(sass()) // Преобразуем Sass в CSS посредством gulp-sass
.pipe(autoprefixer([‘last 15 versions’, ‘> 1%’, ‘ie 8’, ‘ie 7’], { cascade: true })) // Создаем префиксы
.pipe(gulp.dest(‘app/css’)) // Выгружаем результата в папку app/css
.pipe(browserSync.reload({stream: true})) // Обновляем CSS на странице при изменении
});
gulp.task(‘browser-sync’, function() { // Создаем таск browser-sync
browserSync({ // Выполняем browserSync
server: { // Определяем параметры сервера
baseDir: ‘app’ // Директория для сервера — app
},
notify: false // Отключаем уведомления
});
});
gulp.task(‘scripts’, function() {
return gulp.src([ // Берем все необходимые библиотеки
‘app/libs/jquery/dist/jquery.min.js’, // Берем jQuery
‘app/libs/magnific-popup/dist/jquery.magnific-popup.min.js’ // Берем Magnific Popup
])
.pipe(concat(‘libs.min.js’)) // Собираем их в кучу в новом файле libs.min.js
.pipe(uglify()) // Сжимаем JS файл
.pipe(gulp.dest(‘app/js’)); // Выгружаем в папку app/js
});
gulp.task(‘css-libs’, [‘sass’], function() {
return gulp.src(‘app/css/libs.css’) // Выбираем файл для минификации
.pipe(cssnano()) // Сжимаем
.pipe(rename({suffix: ‘.min’})) // Добавляем суффикс .min
.pipe(gulp.dest(‘app/css’)); // Выгружаем в папку app/css
});
gulp.task(‘watch’, [‘browser-sync’, ‘css-libs’, ‘scripts’], function() {
gulp.watch(‘app/sass/**/*.sass’, [‘sass’]); // Наблюдение за sass файлами в папке sass
gulp.watch(‘app/*.html’, browserSync.reload); // Наблюдение за HTML файлами в корне проекта
gulp.watch(‘app/js/**/*.js’, browserSync.reload); // Наблюдение за JS файлами в папке js
});
gulp.task(‘clean’, function() {
return del.sync(‘dist’); // Удаляем папку dist перед сборкой
});
gulp.task(‘img’, function() {
return gulp.src(‘app/img/**/*’) // Берем все изображения из app
.pipe(cache(imagemin({ // Сжимаем их с наилучшими настройками с учетом кеширования
interlaced: true,
progressive: true,
svgoPlugins: [{removeViewBox: false}],
use: [pngquant()]
})))
.pipe(gulp.dest(‘dist/img’)); // Выгружаем на продакшен
});
gulp.task(‘build’, [‘clean’, ‘img’, ‘sass’, ‘scripts’], function() {
var buildCss = gulp.src([ // Переносим библиотеки в продакшен
‘app/css/main.css’,
‘app/css/libs.min.css’
])
.pipe(gulp.dest(‘dist/css’))
var buildFonts = gulp.src(‘app/fonts/**/*’) // Переносим шрифты в продакшен
.pipe(gulp.dest(‘dist/fonts’))
var buildJs = gulp.src(‘app/js/**/*’) // Переносим скрипты в продакшен
.pipe(gulp.dest(‘dist/js’))
var buildHtml = gulp.src(‘app/*.html’) // Переносим HTML в продакшен
.pipe(gulp.dest(‘dist’));
});
gulp.task(‘clear’, function (callback) {
return cache.clearAll();
})
gulp.task(‘default’, [‘watch’]);
Современная сборка 2020 для frontend. Gulp4
Посмотрев на календарь, я понял, что уже 2020, а посмотрев на свою сборку, которая была с 2018 года, я понял, что пора её менять. В этой статье мы разберем структуру проекта, плагины (минимальный набор функционала) и их новые возможности, которые добавились за такое большое время. Мы разберем все моменты, чтобы новичок мог себе скачать эту сборку и начать с ней работать.
Не только древность моей сборки мотивировала на эту статью, но и еще одна причина: мне больно смотреть, когда заходят на онлайн-сервисы для конвертации scss
, минификации javascript
и других рутинных задач. Самое забавное — когда сделали мелкую правку, снова нужно проходить все круги ада копипаста.
Перед тем, как вы начнете читать, хочу сказать, что материала очень много, поэтому писал только основное. Слишком очевидных вещий старался не писать, но хотел, чтобы смог понять каждый новичок. Если будут непонятные моменты, то смело переходите по ссылкам и читайте более подробную информацию, а потом снова возвращайтесь к статье. Можете задавать вопросы в комментариях, всем постараюсь ответить.
Gulp
Начнем с главного в нашей сборке.
Gulp — это наш фундамент, потому что он будет управлять всеми нашими задачами, другими словами, taskmanager
. Концепция задач очень проста. Название асинхронной javascript функции равно названию задачи, и работает она по принципу: берет данные, трансформирует их и записывает результат.
Пример минификации сss
Как видим, все просто: называем нашу задачу css
, вызываем функцию src
, которая берет данные по определенному шаблону и передает данные по трубе (функция pipe()
). Внутри pipe
вызываем функцию плагина, которая трансформирует наши данные и результат передает функцию dest
. dest
— записывает результат по указанному пути.
С pipe
можно выстраивать любые цепочки.
Пример
В четвертой версии много чего изменилось, но на что нужно точно обратить внимание — это на gulp.series()
и gulp.parallel()
. Позже мы разберем параллельное выполнение задач.
Как вы заметили, в примерах я экспортировал функции, в старом API использовали gulp.task()
:
gulp.task('taskName',function() {
//do somethings
})
Больше не рекомендуется использовать gulp.task()
.
Экспортирование функций позволяет разделять на публичные и приватные задачи.
публичные задачи
— экспортируются из вашего gulpfile, что позволяет запускать их командой gulp.приватные задачи
— создаются для внутреннего использования, как правило, в составеseries()
илиparallel()
Пару слов о шаблонах поиска файлов в функции src
.
templates/*.html
— ищет файлы с расширениемhtml
в папкеtemplates
templates/**/*.html
— ищет файлы с расширениемhtml
во всех папках, которые вtemplates
Более подробная информация здесь, здесь и здесь.
После того, как мы разобрались с фундаментом нашего проекта, начнем делать первые шаги. Проверяем, установлены ли node.js
и npm
.
Команды в консоли
Если они не установлены, следуйте инструкциям здесь.
Создаем папку для нашего проекта. Внутри инициализируем npm npm init --yes
Ключ --yes
означает автоматические ответы вопрос по проекту.
Создадим три папки:
build
— оптимизированные файлы для использования на сервереsrc
— рабочая папка, где будут храниться все наши исходникиgulp
— здесь будут храниться наши tasks
Еще добавим файл .gitignore
, чтобы системные файлы не попадали в репозиторий.
Папка /build
задокументирована, потому что часто использую GitHub Pages
для демонстрации работы.
Не забудьте установить gulp: npm install --save-dev gulp
.gitignore
# Файлы и папки операционной системы
.DS_Store
Thumbs.db
# Файлы редактора
.idea
*.sublime*
.vscode
# Вспомогательные файлы
*.log*
node_modules/
# Папка с собранными файлами проекта
# build/
HTML
У НTML сильно громоздкий синтаксис, и при большой вложенности тегов сложно разобрать код. Еще одна проблема в том, что многие забывают закрывать теги. Можно возразить, что сейчас умные IDE без проблем индицируют эти проблемы, но, как правило, новички не обращают внимания, что там им говорит IDE, и еще грешат форматированием кода.
Пример немного не реалистичный, но почти такое делают
Все наши проблемы решает Pug. Одного примера будет достаточно, чтобы понять, как его использовать. Не понимаю, почему этот плагин еще повсюду не используют.
Пример базового функционала
Новичкам советую обратить внимание еще на несколько возможностей:
Разделение на модули
— удобно, когда используешь БЭМ: один блок — один файл. Подробнее.
Пример из документации
Миксины
— удобно использовать для однотипных блоков. Например, карточки товаров или комментариев. Подробнее.
Пример с документации
Циклы
для генерации однотипных блоков. Подробнее.
Пример с документации
За последнее время сильно ничего не изменилось, только название с Jade
на Pug
. Подробнее.
Разделяем HTML
На нашем сайте будут две тестовые страницы about
и index
. Структура на страницах повторяется: есть блоки <footer>
, <header>
, <head>
. Поэтому все нужно вынести в отдельные файлы модули.
Структура проекта
Разберем все более подробно.
pages
— папка для наших страниц, где в корне хранятся непосредственно страницыcommon
— хранятся общие блоки для всех страницincludes
— хранятся модули страниц, где внутри еще одна папка, которая соответствует названию страницы
Пройдемся по файлам:
layout.pug
— шаблон, который хранит основную структуру, и от него наследуются все другие страницы
layout.pug
index.pug
иabout.pug
— наши страницы, которые наследуются от шаблона и подключают свои контентные модули
pages/index.pug и pages/about.pug
Еще, обратите внимание, у pug
есть комментарии, которые попадают в html
и которые нет. Подробнее здесь.
Установим плагин gulp-pug для компиляции наших шаблонов. Выполните в консоли команду: npm i gulp-pug
Создадим файл pug2html.js
в папке gulp/tasks
.
pug2html.js
Здесь все понятно: ищем файлы по указанному пути, компилируем и результат выгружаем в папку build
. Еще добавим pug-linter, чтобы новички не косячили и сохраняли единый стиль написания кода. Для конфигурации создадим файл .pug-lint.json
в корне проекта. Правила для линтера писал на свой вкус. Вы без проблем сможете изменить. Список правил.
Теперь подключаем нашу задачу в файле gulpfile.js
.
gulpfile.js
Здесь мы создаем серию с одной таски с названием start
; потом мы добавим ещё. Теперь в консоли выполните команду gulp start
, и в папке build
должны появиться два файла: index.html
и about.html
.
Еще добавим gulp-w3c-html-validator, чтобы не было нелепых ошибок. Вы, наверное, догадались, что порядок подключения плагинов c помощью pipe()
очень важен. То есть перед тем, как вызвать плагин pug()
для компиляции, нужно сделать валидацию плагином pugLinter()
, а плагин gulp-w3c-html-validator
подключаем после pug()
, потому что нам нужно валидировать скомпилированный html
.
Последний плагин gulp-html-bem-validator — самописный плагин, сделал на скорую руку, потому что не смог найти аналогов. Очень маленький функционал, думаю, со временем буду улучшать.
Пример работы плагина
Финальный код таски pug2html.js
Для стилей мы будем использовать Scss. Все дается по аналогии с задачей pug2html
. Создаем новую папку styles
и скачиваем нужные пакеты npm install node-sass gulp-sass --save-dev
.
Дальше пишем задачу, как и делали раньше. Берем файлы, передаем в плагин и потом сохраняем результат.
tasks/styles.js
Дальше мы добавим вспомогательные плагины: npm i gulp-autoprefixer gulp-shorthand gulp-clean-css gulp-sourcemaps stylelint gulp-stylelint stylelint-scss stylelint-config-standard-scss stylelint-config-standard stylelint-config-htmlacademy
Пройдемся по каждому плагину:
- gulp-autoprefixer — автоматическая расстановка префиксов для старых браузеров.
- gulp-shorthand — сокращает стили.
Пример
- gulp-clean-css — минификация стилей
- gulp-sourcemaps — ответ на вопрос: «Что это такое и зачем нужно?»
- stylelint gulp-stylelint stylelint-scss — плагины для проверки наших стилей
- stylelint-config-htmlacademy stylelint-config-standard stylelint-config-standard-scss — готовые конфиги, которые мы подключили в свой конфиг
Файлы styles:
Структура папки styles
global.scss
media.scss
Немного обсудим файл media.scss
. Есть два варианта организации медиа-запросов.
- Писать медиа-запросы ко всему блоку в конце файла.
- Писать медиа-запросы в самом селекторе, используя
@mixin
и@include
.
Пример второго варианта
Я поклонник второго варианта, удобно, когда все стили в одном месте, и не нужно никуда скроллить и ничего искать.
Последний шаг: подключим normalize.css. Установим командой npm install normalize.css
и добавим @import "../../../node_modules/normalize.css/normalize";
в начале файла global.scss
Зачем нужен normalize.css?
Все делаем так же, как и с другими тасками, только подключаем другие плагины.
Установим сначала все необходимые зависимости npm i gulp-babel @babel/core @babel/preset-env --save-dev
и зависимости для eslint npm install eslint eslint-config-htmlacademy eslint-config-standard eslint-plugin-standard eslint-plugin-promise eslint-plugin-import eslint-plugin-node --save-dev
- gulp-babel @babel/core @babel/preset-env — babel конвертирует ECMAScript 2015+ код в более старую версию
Пример
- gulp-terser — минификация и оптимизация javascript.
Задача script
- eslint — мы уже знаем, что делают линтеры. Решил подключить готовые конфиги, потому что очень много разных правил, чтобы все настраивать с нуля.
.eslintrc.json
Устанавливаем плагины npm i gulp-imageMinify gulp-svgstore
Для картинок используется банальный код, который вы уже на данном этапе без проблем можете понять.
Шрифты мы просто копируем.
Не вижу смысла объяснять, как делать svg спрайты, когда в интернете много статей. Вот одна из них.
Чтобы каждый раз не обновлять страницу при изменении файла, подключим browser-sync. У gulp есть встроенная функция, которая следит за изменениями и вызывает нужные нам функции. Советую зайти и почитать о возможностях browsersync. Мне очень нравится возможность открытия сайта и синхронизации прокрутки страницы на нескольких устройствах. Очень удобно верстать адаптивные сайты: открыл на компьютере, открыл на телефоне — и сразу видишь результат.
Наш локальный сервер. Задача serve
Бывает такое, что сделал опечатку, сохранил код и сборка падает с ошибкой. Нужно снова перезапускать сборку, и со временем это может начать раздражать, поэтому установим npm i gulp-plumber
. Plumber будет перехватывать ошибки, и после устранения ошибки сборка восстановит работоспособность. Интегрировать его очень просто, добавляем его первым .pipe(plumber())
в наших трубопроводах цепочках pug2html
и styles
.
Во время разработки мы будем создавать и удалять файлы. Так как у нас live reload
, то созданные файлы автоматически попадут в build
. Когда чуть позже мы решим удалить файл, то он останется в папке build
, поэтому сделаем еще одну задачу clean
, которая будет удалять папку. Установим плагин npm install del
. Del.
const del = require('del')
module.exports = function clean(cb) {
return del('build').then(() => {
cb()
})
}
Главное — не забыть вызвать функцию-callback, которая сообщит gulp, что задача выполнена.
Lighthouse
Lighthouse — решение для веб-приложений и веб-страниц, которое собирает современные показатели производительности.
Кстати, некоторые заказчики смотрят на эти показатели, так как не знают других способов оценить качество верстки.
Вы можете возразить, зачем ради одной странички заморачиваться, но в реальных проектах их может быть больше 10.
Скрин с реального проекта
Устанавливаем npm i --save-dev gulp-connect lighthouse chrome-launcher
и создаём задачу.
Результат для каждой странички будет генерироваться в папку ./reports
. Там будут ‘html’ файлы, они открываются автоматически, но вы сами в любой момент можете их открыть и посмотреть результат.
На первый взгляд может показаться, что лучше запустить несколько страниц на тестирование, но этого нельзя сделать в одном запущенном процессе хрома, а если запустить несколько процессов паралельно, то результаты могут быть очень неточные.
lighthouse.js
Кода многовато, но он простой. Запустили наш локальный сервер с помощью browser-sync
, потом хром и в конце lighthouse
, где говорим, по какому url
искать наш сайт.
В нашей команде есть правило, что все dependencies
нужно загружать в репозиторий. Это было связано с тем, что иногда может пропасть интернет в стране. Вручную скачивать пакеты с сайтов и загружать их в папку не очень удобно, ещё сложно следить за версиями пакетов, и каждый раз из node_modules обновлять также не очень удобно, поэтому мы должны оптимизировать этот процесс.
gulp-npm-dist — очень хороший плагин, мне он нравится тем, что он не просто копирует всю папку модуля, а только нужные файлы. README.md
, LICENSE
, .gitignore
и другие конфигурационные файлы не копируются.
Теперь сделаем, чтобы при изменении package.json
вызывался плагин. Не вижу смысла сильно заморачиваться и следить только за изменениями объекта dependencies
, поэтому будем просто следить за файлом.
Последняя оптимизация. Часто сложно и лень запоминать консольные команды, там много параметров, вводить все эти пути занимает время,
поэтому запишем длинные команды в более краткие команды.
Рассмотрим такую ситуацию: вы скопировали большой кусок кода с постороннего ресурса, и
он не соответствует вашим правилам форматирования.
Не будете же вы всё править руками? Можно просто в консоли ввести команду, которая все исправит
за вас stylelint ./src/styles/**/*.scss --fix --syntax scss
, команда длинная, поэтому запишем ее в NPM-скрипт
Добавили NPM-скрипт
Как видим на скрине, теперь в консоли можно вводить npm run stylelint-fix
.
Напишем еще несколько команд:
npm run start
— вместоgulp
, привык, что любой проект у меня запускается этой командойnpm run build
— вместоgulp build
, такая же ситуация, как в прошлом пунктеnpm run lighthouse
— вместоgulp build && gulp lighthouse
, сначала собираем проект, а потом уже тестируемnpm run test
— запуск разных линтеров, хорошей практикой будет запускать перед комитом
Не верю я, что вы будете перед комитом запускать npm run test
, даже не верю, что я буду. Поэтому скачаем husky и добавим:
"husky": {
"hooks": {
"pre-commit": "npm run test"
}
}
в package.json
. Если npm run test
вернет ошибку, то комит не будет сделан.
Очень приятно, если вы прочли всю статью и сумели принять мои мысли. Отвечу на вопросы в комментариях и жду ваших pull requests
и issue
. Всем приятных сборок.
Ссылка на репозиторий с тем, что у нас получилось: github.
javascript — Установка плагинов Gulp локально против глобально
Я довольно новичок в Gulp и у меня есть вопрос: я должен установить плагины gulp (такие как gulp-sass или gulp-imagemin) локально или глобально? В примерах в Интернете люди в основном делают это локально (с опцией --save-dev
). Как я понимаю, таким образом модули хранятся в локальной папке node_modules
, добавляются в локальный package.json
как devDependencies и на них можно ссылаться в локальном gulpfile.js через require()
. Поэтому, если мне нужно установить те же модули для другого проекта, над которым я работаю, это можно сделать, скопировав package.json
в папку нового проекта и напечатав npm install
в инструменте командной строки (после перехода к папка проекта). Хорошо.
Но что, если я, как обычный пользователь gulp, не планирую загружать и делиться своими материалами в пространстве npm и не заинтересован в поддержке devDependencies, могу ли я в этом случае просто установить плагины gulp глобально, как npm install -g gulp-sass
? Будут ли они найдены через глобальный путь в моей системе? Является ли это вообще возможностью, если я не хочу беспокоиться о том, чтобы скопировать package.json
, запускать npm install
каждый раз, когда я создаю новый проект, или на моем компьютере разбросано несколько копий одних и тех же модулей? диск ?
0
curveball
18 Фев 2017 в 14:53
2 ответа
Лучший ответ
Для плагинов, которые вы используете через gulp, вам нужно установить их локально в проект. Несмотря на то, что вам нужно установить gulp на глобальном и локальном уровне, запустите файл, а затем для проекта выберите команды и функции на основе gulp.
Причина, по которой вы должны установить плагины через npm
локально, заключается в том, что он специфичен для проекта, например, если вы затем загрузили этот проект на свой сервер или хост на github, вам нужно было бы пойти и глобально установить все ваши пакеты снова. Если они сохранены, они существуют в вашем packages.json
, так что когда вы запускаете npm install
для установки всех пакетов для указанного проекта, npm знает, что устанавливать.
Если я могу уточнить что-нибудь, дайте мне знать.
1
user3329290user3329290
18 Фев 2017 в 12:11
Тип «глобальной установки» для описанного типичного случая OP может заключаться в том, чтобы иметь папку, в которую вы помещаете свой package.json со всеми зависимостями, необходимыми для каждого из ваших проектов, и запускаете npm install
оттуда. И поместите здесь также свои gulpfiles для каждого проекта (вы можете назвать их как хотите), например, gulpfile-project1.js, conf-project2.js … что угодно.
Конечно, измените ваши пути в этих файлах соответственно. И из этого каталога запустите gulp, используя флаг -f:
gulp -f gulpfile-project1.js
Итак, вы заканчиваете этим видом лесов:
my_dev_directory
- project1
- dev
- main.less
- main.js
- www
- main.css
- main.js
- gulp
- node_modules
- package.json
- package-lock.json
- gulpfile-project1.js
В ваших gulpfiles начните объявлять const с базовым путем вашего проекта, чтобы упростить все объявления пути, например:
const path_dev = '../project1/dev';
const path_www = '../project1/www';
Таким образом, на вашем диске установлен только один каталог node_modules, а каталоги ваших проектов содержат только общедоступные файлы, которые вы хотите загрузить, но не файлы dev.
Конечно, одним из основных недостатков является то, что вы используете одну и ту же версию модуля для всех своих проектов, но она отвечает потребностям ОП, и даже если это не рекомендуется, а не «правильный способ сделать», вы можете делать все, что хотите с вашими инструментами разработки 🙂
0
UnSeulT
24 Янв 2020 в 17:08
Grunt vs Gulp — сборщики файлов
Alla Rud
18.05.2016
1
4868
на прочтение 4 минуты
Grunt и Gulp — популярные сборщики файлов, которыми пользуются много разработчиков. Рассмотрим особенности и возможности каждого из них.
GruntJS — написан на JavaScript, использует Node.js и поддерживается разными платформами. Официальная страница — gruntjs.com. ПО имеет плагины для: уменьшение JavaScript и CSS, интеграции предварительных процессоров для CSS и JavaScript таких, как Sass/Compass, Less and Stylus, CoffeeScript или LiveScript Сасс / Compass, оптимизации размеров файлов изображения PNG и JPEG и автоматического встраивания изображений, и много другого полезного для Вашей работы. С помощью Grunt Вы сможете создать свой качественный продукт. На официальном сайте можно найти ссылки на все возможные плагины и начать ими пользоваться. Кроме того, данный продукт станет незаменимым помощником при написании больших веб-приложений. В чем же его особенности: программа интегрирует оптимизации для Require.js и Google Closure Compiler, позволяет предварительной компиляции шаблонов Handlebars, Jade, Underscore, Mustache, Eco или Hogan. В наличии плагины для популярных каркасов для тестирования — Jasmine, Mocha, QUnit и Cucumber.
Как видим, преимуществ достаточно. Перейдем к подготовке работы с Grunt. Прежде нужно установить nodejs, файлы установки можно найти на официальном сайте. Далее создаем в папке с проектом два файла package.json и Grunfile.js, делаем их настройку. Создаем папку под проект, или заходим в уже существующую с помощью консоли, и выполняем команду npm install, для того что бы установить Grunt, и все нужные пакеты (которые описываем предварительно в package.json). Для запуска Grunt, запускаем команду grunt в консоли. Установка завершена!
GruntJS — гибкий и полезный инструмент для автоматизации процесса повторяющихся заданий.
Gulp — еще один сборщик проектов, который ускоряет разработку, автоматизируя запуск задач. Имеет большое количество плагинов. А также позволяет управлять файлами javascript и настраивать запуск задач другими задачами.
Gulp.js использует код вместо конфигураций. Это делает его более простым в управлении. Для быстроты работы используется stream. Отличается от Grunt тем, что вместо создания input/output для каждого плагина Gulp передаёт исходные файлы через все установленные плагины, чтобы затем создать выходной файл.
Для начала установки Вам необходимо установить прежде всего Node.JS и npm. Потом создаем директорию проекта, структуру каталогов и установливаем Gulp и все необходимые плагины. Для совершения данных действий в сети существует масса подробных инструкций.
Таск-менеджер Gulp.js создан в качестве достойной альтернативы популярному GruntJS.
Ознакомимся с основными различиями между GruntJS и Gulp.js.
Gulp основан на принципе потоковой передачи данных, которая дает намного больше контроля над тем, что происходит и также избавляет от промежуточных папок и файлов. Вы передаете файл в gulp,потом лишь сохраняете результат в другой файл. Данная схема проста и понятна в использовании.
В сборщики Gulp так как он более новый, разработчики сделали все, чтобы не повторить в нем недостатки Grunt. Прежде всего, не нужно использовать плагин watch, функция реагирования на изменения в файлах уже есть в ядре. Используется простой и понятный JavaScript-код, а в Grunt конфигурационные файлы напоминают объект JSON. Ну и в Grunt задачи работают с файлами вместо потоков данных, а в Gulp, как уже писалось выше, работа основана на потоковой передачи данных, что намного удобней.
Более старый Grunt имеет больше плагинов чем Gulp, но это связано с тем, что Gulp менее зрелый проект. Плагины Grunt для оптимизации работы (имееются также в Gulp): grunt-contrib-watch, grunt-contrib-jshint, grunt-mocha, grunt-notify, grunt-contrib-uglify. Для Gulp есть специальный плагин gulp-grunt, который дает возможность запускать файлы Grunt.
Что выбрать Gulp или Grunt? Выбор стоит делать исходя из своих потребностей. Grunt — легкий и зрелый продукт, Gulp — гибкий и акутальный, так как появился сравнительно недавно. Учитывайте все преимущества и недостакти каждого, и в любом случае независимо от выбора, любое из этих ПО поможет качественно автоматизировать процесс Вашей работы.
Также к вашему вниманию следущие обзоры на нашем блоге — Обзор актуальных шаблонизаторов JS и О Node.js для начинающих.
Использование ES6 в Gulp | Блог Ирины Соколовской
Относительно недавно я начала использовать в своих проектах новый стандарт JavaScript, ES6. В этой записи я расскажу, как настроить Gulp, чтобы внутри gulpfile тоже можно было писать на ES6.
Способ 1, с использованием Babel
Так как я занимаюсь в основном фронтендом, то для того, чтобы код, написанный на ES6, запускался в браузере, я использую Babel. Сборку проекта я делаю при помощи Gulp. Поэтому, можно обработать gulpfile при помощи Babel.
Для нового проекта установка будет выглядеть так:
- Инициализировать npm в папке проекта:
npm init
- Установить для проекта Gulp:
npm install --save-dev gulp
и Babel:npm install --save-dev babel-core babel-preset-es2015
- В файле package.json (он появится после выполнения инициализации npm) добавить в раздел со скриптами команду для запуска Gulp:
«scripts»: {
«gulp»: «./node_modules/gulp/bin/gulp.js»
}
Благодаря этому, сборка запускается командойnpm run gulp
. - Теперь надо создать в папке проекта файл
.babelrc
со следующим содержимым:
{
«presets»: [«es2015»]
}
После этого можно создать gulpfile с названием gulpfile.babel.js
, и написать в нем необходимые такси, например:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| ‘use strict’;
import gulp from ‘gulp’; import sass from ‘gulp-sass’;
const dirs = { src: ‘src’, dest: ‘build’ };
const sassPaths = { src: `${dirs.src}/app.scss`, dest: `${dirs.dest}/styles/` };
gulp.task(‘styles’, () => { return gulp.src(paths.src) .pipe(sass.sync().on(‘error’, plugins.sass.logError)) .pipe(gulp.dest(paths.dest)); }); |
Babel позволяет использовать внутри gulpfile все новинки, появившиеся в ES6, в том числе модули.
Способ 2, с использованием новой версии Node.js
В Node.js версии 6, которая вышла всего несколько дней назад, 27 апреля, реализовано 93% возможностей ES6, что больше, чем в Babel. Это позволяет использовать новые возможности языка внутри gulpfile без дополнительных инструментов, что, как мне кажется, должно работать быстрее.
К сожалению, использование новых версий возможно не всегда, так как могут возникать конфликты с уже используемыми в проекте пакетами. Например, node-sass, и соответственно gulp-sass, пока не работают на nodejs 6.
Кураторский список полезных плагинов gulp для потрясающей и простой веб-разработки. · GitHub
Кураторский список полезных плагинов gulp для потрясающей и простой веб-разработки. · GitHub
Мгновенно делитесь кодом, заметками и фрагментами.
Кураторский список полезных плагинов gulp для потрясающей и простой веб-разработки.
Кураторский список полезных плагинов gulp для потрясающей и простой веб-разработки.
Глобальный
- main-bower-files — выбирает все файлы, удовлетворяющие критериям фильтрации, из основных зависимостей bower. Полезно для фильтрации файлов шрифтов
'** / *. {Eot, svg, ttf, woff, woff2}'
и копирования их в/ dist / fonts /
- wiredep — добавляет ссылки на файлы зависимостей bower в html / js / css, которые содержат правильный тег комментария
- gulp-sourcemaps — строить исходные карты.Используйте это вместо создания sass или minifier, если впоследствии вы проделаете дополнительную работу с этими файлами, например, автопрефикс css.
- gulp-watch — лучше gulp.watch, потому что слушает новые файлы
- gulp-cached — кэширование в памяти для более быстрой сборки
- gulp-concat — объединить файлы
- gulp-rename — переименовать файлы
- gulp-zip — zip файлы
- gulp-Remember — запоминает файлы, которые прошли через него, и добавляет в поток только те файлы, которые когда-либо видели.
Javascript
CSS
HTML
- gulp-useref — анализирует выбранные файлы, проверяет комментарии к сборке, которые при использовании используются для объединения файлов. Можно получить несколько сборок, а затем выполнить определенную работу с каждой из них, например, минимизировать css и jshint javascript. Предпочитаю вводить глоток
- gulp-inject — плагин для вставки JavaScript, таблиц стилей и веб-компонентов для Gulp, то есть вставка ссылок на файлы в ваш index.HTML
- gulp-minify-html — минимизировать html
- gulp-substituter — заменить совпадающие строки в файлах на определенные значения
ИЗОБРАЖЕНИЙ
Помощники
Тестирование
Вы не можете выполнить это действие в настоящее время.
Вы вошли в систему с другой вкладкой или окном. Перезагрузите, чтобы обновить сеанс.
Вы вышли из системы на другой вкладке или в другом окне. Перезагрузите, чтобы обновить сеанс.
Awesome gulp — тщательно подобранный список потрясающих ресурсов, плагинов и шаблонов Gulp для лучшей автоматизации рабочего процесса разработки
Кураторский список замечательных ресурсов gulp, плагинов и шаблонов для лучшей автоматизации рабочего процесса разработки.
Ищете что-то другое? Взгляните на другие замечательные списки.
Вклад
: octocat: Любой вклад приветствуется. Не стесняйтесь вносить свой вклад (рекомендации).
Содержание
Легенда
[: no_entry:] — Уведомление о прекращении поддержки;
Ресурсы
Общие ресурсы
Официальная документация
Сообщество
Учебники
Учебники Gulp
Gulp 4 Учебники
Gulp с Browserify
Gulp с угловым
Gulp с Angular и Browserify
Gulp с Angular и Webpack
Gulp с React и Browserify
Глоток с углем
Разные ресурсы
Плагины
Сборник
Транспиляция
Конкатенация
Минификация
Оптимизация
Внедрение активов
- gulp-useref — Анализирует блоки сборки в файлах HTML для замены ссылок на неоптимизированные сценарии или таблицы стилей.
- gulp-inject — Преобразует каждый файл в строку и вставляет каждую преобразованную строку в заполнители в файлах целевого потока.
- wiredep — Подключите зависимости Bower к исходному коду.
Шаблоны
Линтинг
Живая перезагрузка
Кэширование
Управление потоком
- merge-stream — объединить несколько потоков в один чередующийся поток.
- streamqueue — Постепенно направляет потоки в очередь.
- run-sequence — запускает серию зависимых задач gulp по порядку.
- gulp-if — Условно запустить задачу.
Лесозаготовка
- gulp-notify — Плагин уведомлений для gulp.
- gulp-size — Показать размер вашего проекта.
- gulp-debug — Отладка потоков виниловых файлов, чтобы увидеть, какие файлы проходят через ваш конвейер gulp.
Тестирование
Разные плагины
Строительные леса
Заглушки
- веб-стартовый комплект — Google Web Starter Kit.
- gulp-plugin-markerplate — шаблон для запуска создания подключаемых модулей gulp.
- — отправная точка для приложений Polymer 1.0.
- este — Самый полный стек разработчика React / Flux и стартовый набор для изоморфных функциональных веб-приложений.
- mnml — минимальный шаблон для запуска адаптивного проекта HTML5 / Sass.
- kraken — легкий шаблон, ориентированный на мобильные устройства, для интерфейсных веб-разработчиков.
- angularjs-gulp-browserify-template — шаблон с использованием AngularJS, Sass, gulp и Browserify.
- хапи-ниндзя — Узел.js, Hapi и Swig.
- laravel-5-cabinplate — Шаблонный проект Laravel 5.
- react-starterkit — стартовый комплект React, который содержит react-router, Reflux, jest, webpack, gulp и Stylus.
Стартовый набор для полимеров
Генераторы Йомен
Разное
- elixir — чистый, свободный API для определения основных задач gulp для ваших приложений Laravel.
- gulp-app — Gulp как приложение (OS X).
- lmn-gulp-tasks — Пример модульного тестирования задач gulp.
- gulp-chef — элегантный, интуитивно понятный способ повторного использования задач gulp.
Лицензия
Насколько это возможно в соответствии с законом, Филипп Алферов отказался от всех авторских и смежных прав на эту работу.
Плагин
Gulp — SegmentFault 思 否
Ранее мы упоминали, что при обучении сжатию JS, CSS, изображений и других файлов вам необходимо использовать некоторые связанные плагины. Gulp предоставляет несколько полезных плагинов для обработки HTML и CSS, JavaScript, графики и некоторого другого контента.Давайте посмотрим на некоторые из различных типов плагинов в gulp.
Плагины HTML и CSS
Плагин | описание |
---|---|
autoprefixer | Автоматически включать префиксы для свойств CSS |
gulp-browser-sync | |
gulp-useref | Используется для замены ссылок на неоптимизированные скрипты или таблицы стилей |
gulp-email -design | Создание шаблона электронной почты HTML, преобразование стиля CSS во встроенный |
gulp-uncss | Оптимизация файлов CSS и поиск неиспользуемых и повторяющихся стилей |
gulp-csso | Оптимизатор CSS, который может минимизировать файлы CSS , тем самым уменьшая размер файла |
gulp-htmlmin | Свернуть файл HTML |
gulp-csscomb 90 226 | Средство форматирования стилей для создания CSS |
gulp-csslint | Указывает линтер CSS |
gulp-htmlhint | Указывает валидатор HTML |
14 плагин JavaScript 902 902 902 902 902 902 902
90sc225 gulp.
Модуль модульного тестирования
Подключаемый модуль | описание | Запустить модульный тест узла Gulp |
---|---|---|
gulp-jasmine | Используется для отчета о проблеме es, связанные с выводом | |
gulp-qunit | Обеспечьте базовый вывод консоли для теста QUnit и используйте модуль узла PhantomJS и подключаемый модуль запуска PhantomJS QUnit | |
gulp-mocha | Укажите тонкую упаковку вокруг Mocha и запустите тест Mocha | |
gulp-karma | Устарело в Gulp |
Графический плагин
Подключаемый модуль | описание | |
---|---|---|
gules PNG | ||
gulp-iconfont | Используется с веб-шрифтами для создания файлов WOFF, EOT, TTF из SVG | |
gulp-imacss | Преобразование файлов изображений в URI данных и их размещение в одном файле CSS | |
gulp-responsive | Генерировать отзывчивые изображения для различных устройств | |
gulp-sharp | Используется для c изменить и настроить ориентацию и фон изображения | |
gulp-svgstore | Объединить файлы и элементы SVG в один файл | |
gulp-imagemin & gulp-tinypng | Используется для сжатия PNG, JPEG, GIF, SVG и других images | |
gulp-spritesmith | Используется для создания таблицы спрайтов из набора изображений и переменных CSS. | Для Gulp предусмотрено несколько подключаемых модулей |
gulp-sass | Предоставить подключаемый модуль SASS для Gulp | |
gulp-compass | Подключаемый модуль Compass для Gulp | |
6 gulp-stylus для сохранения стилуса в CSS | ||
gulp-coffee | Предоставить плагин coffeescript для Gulp | |
gulp-handlebars 9022 6 | Handle plug-in предоставляется для Gulp | |
gulp-jst | Предоставляет шаблоны подчеркивания в JST | |
gulp-react | Укажите шаблон Facebook React JSX как JavaScript | |
gulp-nunju Укажите шаблон Nunjucks в JST | ||
gulp-dustjs | Шаблон пыли, указанный в JST | |
gulp-angular-templatecache | Укажите шаблон AngularJS в templateCache |
clean Другие плагины gulp удаляет другие плагины файлы и папки, а плагин gulp-copy копирует файлы из исходного файла в новое место назначения.
Подключаемый модуль | описание | ||
---|---|---|---|
gulp-grunt | Запускать задачи Grunt из Gulp | ||
gulp-watch | Каждый раз, когда вносятся изменения в файл 21 6, он будет отслеживать 902 файл 902 | gulp-notify | Пока задача не выполняется, она уведомляет сообщение об ошибке |
gulp-git | Он позволяет использовать команды Git. | ||
gulp-jsdoc | Создание документации JavaScript для Gulp | ||
gulp-rev | Он предоставляет статические версии ресурсов для имен файлов | ||
gulp-bump | Добавлена версия в пакете JSON | ||
gulp-bower-files | Используется для инъекции павильонного мешка | ||
gulp-removelogs | Консоль.Оператор журнала удален. -shell | Запуск команд оболочки | |
gulp-ssh | Подключение с использованием задач SSH и SFTP | ||
gulp-zip | Сжимает файлы и папки | ||
gulp-util | Предоставляет утилиту gulp. плагин | ||
gulp -px | Он определяет размер файла в удобочитаемом формате |
阅读 415
Введение и установка Gulp
Gulp 9068 определяется как средство выполнения задач или набор инструментов для автоматизации трудоемких задач, таких как увеличение, объединение, загрузка кеша ng, модульное тестирование и линтинг в веб-разработке.Он использует Node.js в качестве платформы и использует код JavaScript для помощи в выполнении интерфейсных задач и крупномасштабных веб-приложений. Эти задачи можно запускать в PowerShell , Bash Scripts или других терминальных приложениях с помощью командных строк.
Gulp отличается от других исполнителей задач, потому что он передает поток данных от одного плагина к другому, не создавая временный файл на диске. Задачи возвращают измененный поток данных. Gulp — это функционально-ориентированный фреймворк с прямым интерфейсом прикладного программирования, который может более эффективно изменять данные и объединять команды в цепочку.Кроме того, Gulp предпочитает код конфигурации, что делает задачи более управляемыми.
Преимущества:
- Плагины Gulp удобны для пользователя и выполняют одну задачу за раз. Плагины также могут быть созданы программистом.
- Gulp более эффективен, потому что он использует платформу Node.js для повышения скорости.
- На нем легко кодировать и тестировать веб-приложения.
Недостатки:
- Плагины Gulp могут не поддерживать функции из базовой библиотеки, если они устарели.
- Документация плагина Gulp не очень надежна, и отладка плагина может быть сложной задачей.
Плагины: Gulp имеет более 3500 плагинов. Плагины устанавливаются локально через npm . Они используются для преобразования поведения файлов, проходящих через поток данных. Плагины также могут быть условными или встроенными. Каждый плагин имеет определенную задачу и играет роль в работе с HTML и CSS, графикой, JavaScript, модульным тестированием, компиляцией или другими различными действиями.Несколько примеров плагинов, таких как gulp-responsive, gulp-inject, gulp-sass, gulp-grunt, gulp-autoprefixer, gulp-jscs и т. Д.
Предварительные условия для установки:
1. Node.js должен быть установлен в вашей системе. При настройке Node.js должен быть установлен менеджер пакетов npm .
2. Наличие любого терминального приложения, такого как PowerShell , iTerm2 , Bash Script и т. Д., В соответствии с системными требованиями.
Установка Gulp:
- Шаг 1: Откройте приложение терминала вашей системы. Для удобства скриншоты прилагаются к статье и запускаем команду ниже. -G указывает, что Gulp будет установлен в системе глобально и будет доступен для любого файла.
$ sudo npm install gulp-cli -g
Примечание: Запуск от имени администратора, если он используется в Windows. Mac не предлагает такой же возможности.
- Шаг 2: Создайте каталог проекта и перейдите в этот каталог с помощью следующей команды.
$ npx mkdir install-project $ cd install-project
- Шаг 3: Введите следующую командную строку в открывшемся каталоге. Эта строка гарантирует, что мы открыли каталог проекта npm . Прикрепленное изображение показывает вывод на экран после ввода командной строки. Теперь имя пакета должно быть указано пользователем маленькими буквами.Здесь введено имя пакета в качестве примера — install-project.
$ npm init
{
«имя»: «установить-проект»,
«версия»: «1.0.0»,
«описание»: «проверка установки»,
«основная» »:« Index.js »,
« сценарии »: {
« тест »:« эхо \ »Ошибка: не указан тест \» && exit 1 ″
},
«автор»: «XYZ»,
«лицензия»: «ISC»
}
- Шаг 4: Следующая команда установит пакет gulp в devDependencies .
$ npm install --save-dev gulp
- Шаг 5: Чтобы проверить, что Gulp установлен глобально и локально, вы можете выполнить следующую команду.
$ gulp - версия
Gulp — Awesome List
Потрясающий глоток
Кураторский список замечательных ресурсов gulp, плагинов и шаблонов для лучшей автоматизации рабочего процесса разработки.
Ищете что-то другое? Взгляните на другие замечательные списки.
Вклад
: octocat: Любой вклад приветствуется. Не стесняйтесь вносить свой вклад (рекомендации).
Легенда
[] — Уведомление о прекращении поддержки;
Ресурсы
Общие ресурсы
Официальная документация
Учебники
Учебники Gulp
Gulp 4 Учебники
Gulp с Browserify
Gulp с угловым
Gulp с Angular и Browserify
Gulp с Angular и Webpack
Gulp с React и Browserify
Глоток с углем
Gulp с WordPress
Разные ресурсы
Плагины
Сборник
Транспиляция
Конкатенация
Минификация
Оптимизация
Внедрение активов
- gulp-useref — Анализирует блоки сборки в файлах HTML для замены ссылок на неоптимизированные сценарии или таблицы стилей.
- gulp-inject — Преобразует каждый файл в строку и вставляет каждую преобразованную строку в заполнители в файлах целевого потока.
- wiredep — Подключите зависимости Bower к исходному коду.
Шаблоны
Линтинг
Живая перезагрузка
Кэширование
Управление потоком
- merge-stream — объединить несколько потоков в один чередующийся поток.
- streamqueue — Постепенно направляет потоки в очередь.
- run-sequence — запускает серию зависимых задач gulp по порядку.
- gulp-if — Условно запустить задачу.
Лесозаготовка
- gulp-notify — Плагин уведомлений для gulp.
- gulp-size — Показать размер вашего проекта.
- gulp-debug — Отладка потоков виниловых файлов, чтобы увидеть, какие файлы проходят через ваш конвейер gulp.
- gulp-beer — улучшенная система отчетов об ошибках с интерактивными системными уведомлениями и настраиваемым сервером для отображения ошибок.
Тестирование
Разные плагины
- gulp-util — Набор полезных утилит.
- gulp-plumber — Предотвращение поломки труб из-за ошибок.
- gulp-load-plugins — автоматически загружать подключаемые модули gulp.
- main-bower-files — Упростите настройку процесса сборки за счет динамического получения файлов библиотеки.
- autoprefixer — Анализируйте CSS и добавляйте префиксы поставщиков в правила с помощью Can I Use.
- gulp-sourcemaps — Обеспечивает поддержку исходной карты.
- gulp-replace — Плагин замены строки для gulp.
- gulp-rename — легко переименовывать файлы.
- gulp-rev — изменение статического актива путем добавления хэша содержимого к именам файлов: unicorn.css → unicorn-d41d8cd98f.css.
- del — Удаление файлов / папок с помощью глобусов.
- gulp-exec — запустить команду оболочки.
- gulp-strip-debug — Удаляет операторы консоли, предупреждений и отладчика из кода JavaScript.
- gulp-cssimport — анализирует файл CSS, находит импорт, захватывает содержимое связанного файла и заменяет им оператор импорта.
- gulp-inline-css — Вставьте свои свойства CSS в атрибут стиля в файле HTML.
- gulp-gh-pages — Публикация содержимого на страницах Github.
- gulp-ng-annotate — Добавить аннотации внедрения зависимостей AngularJS с помощью ng-annotate.
- gulp-bump — Поднять любую версию semver JSON.
- gulp-file-include — Включить файлы с помощью gulp.
- gulp-zip — файлы сжатия ZIP.
- gulp-git — запускать команды Git с помощью gulp.
- gulp-filter — фильтровать файлы в виниловом потоке с помощью глоббинга.
- gulp-preprocess — предварительная обработка файлов на основе пользовательского контекста или конфигурации среды.
- gulp-eval — Eval JS-выражение или требуются модули CommonJS и файлы JSON.
Строительные леса
Заглушки
- веб-стартовый комплект — Google Web Starter Kit.
- gulp-plugin-markerplate — шаблон для запуска создания подключаемых модулей gulp.
- — отправная точка для приложений Polymer 1.0.
- este — Самый полный стек разработчика React / Flux и стартовый набор для изоморфных функциональных веб-приложений.
- mnml — минимальный шаблон для запуска адаптивного проекта HTML5 / Sass.
- kraken — легкий шаблон, ориентированный на мобильные устройства, для интерфейсных веб-разработчиков.
- angularjs-gulp-browserify-template — шаблон с использованием AngularJS, Sass, gulp и Browserify.
- hapi-ninja — шаблон Node.js, Hapi и Swig.
- laravel-5-cabinplate — Шаблонный проект Laravel 5.
- react-starterkit — стартовый комплект React, который содержит react-router, Reflux, jest, webpack, gulp и Stylus.
- gulp-front — шаблон внешнего интерфейса и модульный фреймворк BEM css, основанный на gulp, pug, stylus, postcss, webpack и babel.
- Front End Starter — шаблон для фронтенд-проектов на базе Gulp, HTML5 bolierplate, Sass, PostCss и Webpack (для транспиляции Babel).
Стартовый набор для полимеров
Генераторы Йомен
Разное
- elixir — чистый, свободный API для определения основных задач gulp для ваших приложений Laravel.
- gulp-app — Gulp как приложение (OS X).
- lmn-gulp-tasks — Пример модульного тестирования задач gulp.
- gulp-chef — элегантный, интуитивно понятный способ повторного использования задач gulp.
Лицензия
Насколько это возможно в соответствии с законом, Филипп Алферов отказался от всех авторских и смежных прав на эту работу.
Visual Studio 2015 и средство выполнения задач
Тенденция разработки последних нескольких лет заключается в использовании средств запуска задач JavaScript для автоматизации интерфейсной разработки. Некоторые из громких имен, получивших широкое распространение, — это Gulp, Grunt, Cake и Broccoli.Исполнители задач могут делать волшебные вещи, такие как компилировать SASS / LESS в CSS, линковать ваши файлы JS и CSS для проверки и правильного форматирования, оптимизировать изображения и файлы SVG, минимизировать ваш код и многое другое. В этой статье блога будет рассказано о Gulp, быстром и многофункциональном средстве выполнения задач, которое быстро устанавливается и запускается.
Еще одно преимущество использования средства выполнения задач, такого как Gulp, удаление зависимостей от подключаемых модулей Visual Studio для управления вашей автоматизацией. Не каждый дизайнер или разработчик может иметь доступ к платным плагинам или знакомым, используя или настраивая определенные плагины.
После того, как вы настроили Gulp, любой дизайнер или разработчик может воспользоваться преимуществами автоматизации, предоставляемыми Gulp, поскольку он живет вместе с проектом и всегда следит за изменениями файлов и / или добавлением файлов. Вы также можете интегрировать Gulp в свой конвейер сборки с помощью определений сборки.
В этой статье мы рассмотрим добавление компиляции SASS через Gulp. Давайте начнем!
Шаг первый: добавьте файл package.json
В корне вашего проекта создайте файл с именем «package.json ». Этот файл используется NPM (диспетчером пакетов для JavaScript) для добавления и отслеживания любых зависимостей, которые могут иметь плагины Gulp. Это базовый файл JSON с минимальной конфигурацией.
Добавьте приведенный выше код и сохраните, и в окне вывода вы увидите, как NPM обращается через межтрубные каналы, чтобы добавить зависимости, необходимые для Gulp.
Давайте добавим наш первый плагин — мы добавим gulp-sass (проверьте ссылку для документации и дополнительной информации за пределами этой статьи).Добавить плагин так же просто, как добавить еще одну строку в файл package.json, например:
Вы заметите выше, что VS 2015 достаточно хорош, чтобы дать нам подсказку о последней версии этого плагина, которая вышла. там. Добавьте последнюю стабильную версию и сохраните файл package.json.
В обозревателе решений вы увидите, как NPM добавляет эти подключаемые модули и зависимости в папку node_modules. Обязательно включите эти файлы в проект и включите их при фиксации и синхронизации с вашим репозиторием для управления версиями.
Шаг 2. Добавьте файл gulpfile.js
В корне вашего проекта создайте файл с именем «gulpfile.js». Этот файл будет содержать конвейер выполнения задач, а также любые команды и конфигурации для ваших автоматизированных задач. Добавьте приведенный ниже код, чтобы настроить Gulp для компиляции любых файлов .scss, найденных в папке / Content / SASS, которые он будет выводить в папку / Content / CSS.
Шаг третий: добавьте файл .SCSS
Затем давайте добавим несколько папок и базовый Gulp.scss, например:
Внутри Gulp.scss мы добавим базовый SASS, чтобы установить белый фон нашего тела с помощью переменной. Добавьте приведенный ниже код, но пока не сохраняйте:
Шаг четвертый: выполняйте задачи
Вот где волшебство объединяется. Откройте окно Task Runner Explorer, и вы увидите две задачи для sass и sass: watch. Это названия задач, которые мы добавили в gulpfile.js.
Задача «sass» выполняет компиляцию и записывает файл CSS.«Sass: watch» настроен для поиска любых изменений или дополнений, и если он обнаруживает изменение, он вызывает «sass», перекомпилирует и повторно выводит файл CSS.
Давайте щелкнем правой кнопкой мыши на «sass: watch» и запустим его, как показано ниже (вы также можете дважды щелкнуть, чтобы запустить)
Вы заметите, что в панель привязок для «sass: watch» была добавлена вкладка, которая сейчас бежит и ждет нас. Продолжайте и сохраните файл Gulp.scss.
Если все пойдет по плану, теперь у вас будет файл CSS в вашем проекте, который был скомпилирован и создан Gulp.Потрясающие!
Заключение и продолжение чтения
Вы прошли 101 глоток! Мы только прикоснулись к возможностям Gulp, но теперь вы знаете основы и знания, чтобы начать использовать другие плагины Gulp для еще большей автоматизации. Добавление новых плагинов и запуск новых задач работает так же, как описано здесь для SASS. Попробуйте еще несколько полезных плагинов ниже!
Автоматизируйте рабочий процесс разработки с помощью GulpJS
TL; DR: В этом руководстве я познакомлю вас с GulpJS и покажу, как настроить его в вашем приложении для автоматизации задач.
GulpJS — это средство выполнения задач JavaScript, которое позволяет автоматизировать несколько задач во время разработки. Эти задачи включают минимизацию файлов JavaScript и CSS, автоматическое обновление браузера после редактирования файла, компиляцию препроцессоров CSS, выполнение тестов, сжатие изображений и многое другое. GulpJS решает проблему повторения.
«GulpJS решает проблему повторения».
Tweet This
GulpJS — это инструмент сборки, который помогает вам как разработчику избавиться от ручного запуска таких задач, как упомянуто выше, во время разработки для каждого проекта.После того, как вы настроите GulpJS, он автоматизирует самые неприятные задачи, повысит вашу производительность и позволит вам сосредоточиться на построении логики приложения.
Требования GulpJS
Чтобы использовать GulpJS, на вашем компьютере должны быть установлены следующие инструменты.
- Node.js : перейдите на веб-сайт Node.js и установите последнюю версию на свой компьютер.
- GulpJS : глобально установите Gulp в свой терминал, чтобы команду
gulp
можно было запускать из любого каталога.
npm install gulp-cli -g
Возможности GulpJS
GulpJS предоставляет стандартизированный API. Методы API позволяют выполнять любую работу, которую вы хотите выполнить с помощью Gulp. См. Ниже краткое описание методов API:
gulp.task
gulp.task ('dosometask', () => { });
gulp.src
- Прочитать файл или набор файлов в.
gulp.src ('клиент / шаблоны / *. нефрит') .pipe (нефрит ()) .pipe (minify ()) .pipe (gulp.dest ('build / minified_templates'));
gulp.dest
- Записать файлы в каталог.
gulp.src ('./ client / templates / *. Jade') .pipe (нефрит ()) .pipe (gulp.dest ('./ build / templates')) .pipe (minify ()) .pipe (gulp.dest ('./ build / minified_templates'));
gulp.src ('client / js / ** / *. Js') .pipe (minify ()) .труба (gulp.dest ('построить')); gulp.src ('клиент / js / ** / *. js', {база: 'клиент'}) .pipe (minify ()) .pipe (gulp.dest ('построить'));
gulp.watch
- Наблюдать за файлами и что-то делать при изменении файла.
gulp.watch ('js / ** / *. Js', function (event) { console.log ('File' + event.path + 'was' + event.type + ', запущенные задачи ...'); });
Далее давайте посмотрим, как на самом деле можно использовать GulpJS в приложении.Нам нужно создать файл gulpfile.
Настройка GulpFile в приложении
В типичном проекте GulpJS нуждается в некоторой форме инструкций, которые помогут автоматизировать ваши задачи. Эти инструкции записаны в файле под названием gulpfile
. Давайте продолжим и создадим этот файл.
Убедитесь, что вы находитесь в новом каталоге проекта. Внутри каталога создайте файл gulpfile.js
.
Добавьте в файл gulpfile.js
этот код следующим образом:
var gulp = require ('gulp');
глоток.task ('запустить-эту-общую-задачу', function () {
console.log («Это простая задача. Теперь запустите ее»);
});
Мы только что добавили очень простую задачу в gulpfile. Вам всегда нужно требовать модуль узла gulp
, прежде чем вы сможете определять и запускать задачи.
Перед запуском задачи установите gulp локально в своем проекте, например:
npm install --save-dev gulp
Теперь запустите задачу с помощью gulp:
gulp run-this-common -task
GulpJS: Выполнить общую задачу
У задачи было только одно задание — записать предложение в консоль.И он успешно выполнил эту задачу.
Давайте рассмотрим то, что дает нам лучший обзор различных типов операций, которые gulp может обрабатывать в вашем приложении.
Пример использования GulpJS: Project Lingo
Это практический вариант использования. Мы собираемся нарисовать сценарий задач, которые нам нужно выполнить в Project Lingo . Прежде чем мы определим такие задачи, что, черт возьми, это Project Lingo ?
Lingo — это проект, который мы начали в компании TechnoVille. Project Lingo собирается захватить мир так, как вы не можете себе представить. Один из таких способов — позволить простому человеку щелкнуть кнопку, ввести пункт назначения, и Lingo автоматически телепортирует человека в предпочтительный пункт назначения примерно за 5 минут.
В Project Lingo у нас есть несколько файлов JavaScript, Less и изображений. Нам нужно сжать и оптимизировать эти файлы, чтобы Lingo мог работать сверхбыстро. Я имею в виду, вы не хотите, чтобы Линго потратил 3 часа на телепортацию человека из-за неэффективного рабочего процесса разработчиков.Мы также не хотим, чтобы инвесторы и Project Lingo умирали, когда мы могли что-то с этим сделать.
Вот что нам нужно сделать:
- Объединить все наши файлы JavaScript в один файл. Это гарантирует, что наше приложение будет выполнять один HTTP-запрос при обслуживании JavaScript, а не несколько HTTP-запросов.
- Скомпилируйте наши файлы Less в CSS. Браузер понимает CSS, а не МЕНЬШЕ.
- Сжать все наши файлы изображений.
- Обнаружение ошибок и потенциальных проблем в нашем коде JavaScript.Нам нужно убедиться, что разработчики Lingo пишут качественный код JavaScript.
У нас есть эти требования, перечисленные выше. Как мы подходим к решению этих задач с помощью GulpJS?
Project Lingo — установка подключаемых модулей GulpJS
Да, GulpJS имеет потрясающую экосистему подключаемых модулей. Для каждой задачи, которую пытается выполнить разработчик, вероятно, существует плагин GulpJS для автоматизации такой задачи. Установите следующие плагины через свой терминал:
npm install gulp-imagemin gulp -less gulp-jshint gulp-concat gulp-uglify gulp-rename --save-dev
«GulpJS имеет удивительную экосистему плагины.»
Tweet This
Краткое описание того, на что направлены эти плагины.
Project Lingo — Rewrite GulpFile
Откройте файл gulpfile.js
и измените его на следующий код:
const gulp = require ('глоток');
const imagemin = require ('gulp-imagemin');
const jshint = require ('gulp-jshint');
const concat = require ('gulp-concat');
const less = require ('gulp-less');
const uglify = require ('gulp-uglify');
const rename = require ('gulp-rename');
глоток.task ('lint', () => {
вернуть gulp.src ('js / *. js')
.pipe (jshint ())
.pipe (jshint.reporter ('по умолчанию'));
});
gulp.task ('меньше', () => {
вернуть gulp.src ('меньше / *. меньше')
.pipe (меньше ())
.pipe (gulp.dest ('dist / css'));
});
gulp.task ('скрипты', () => {
вернуть gulp.src ('js / *. js')
.pipe (concat ('build.js'))
.pipe (gulp.dest ('расстояние'))
.pipe (переименовать ('build.min.js'))
.pipe (uglify ())
.pipe (gulp.dest ('dist / js'));
});
gulp.task ('compress-images', () => {
глоток.src ('изображения / *')
.pipe (imagemin ())
.pipe (gulp.dest ('расстояние / изображения'))
});
gulp.task ('смотреть', () => {
gulp.watch ('js / *. js', ['lint', 'scripts']);
gulp.watch ('меньше / *. меньше', ['меньше']);
gulp.watch ('изображения / *', ['сжатие изображений']);
});
gulp.task ('жаргон', ['меньше', 'сценарии', 'сжатие изображений', 'смотреть']);
В приведенном выше коде у нас шесть задач. Давайте посмотрим, что делает каждая из этих задач.
задача lint
- Эта задача проверяет все файлы JavaScript в нашем каталоге
js
и запускает их черезjshint
.Jshint гарантирует, что код JavaScript хорошо написан и не содержит ошибок. Если есть какие-либо ошибки, он сообщает о них на консоль.
gulp.task ('lint', () => { вернуть gulp.src ('js / *. js') .pipe (jshint ()) .pipe (jshint.reporter ('по умолчанию')); });
- Эта задача проверяет все файлы JavaScript в нашем каталоге
less task
- Эта задача проверяет все файлы Less в нашем каталоге
less
, компилирует их в CSS и копирует в каталогdist / css
.Если вы чаще используете sass, есть плагин gulp-sass для компиляции ваших файлов sass в CSS.
gulp.task ('less', () => { вернуть gulp.src ('меньше / *. меньше') .pipe (меньше ()) .pipe (gulp.dest ('dist / css')); });
- Эта задача проверяет все файлы Less в нашем каталоге
задача сценариев
- Эта задача проверяет все файлы JavaScript в нашем каталоге
js
, объединяет их в один файл,build.js
, копирует файл в каталогdist / js
, переименовывает файл вbuild.min.js
и уродует его.
gulp.task ('scripts', () => { вернуть gulp.src ('js / *. js') .pipe (concat ('build.js')) .pipe (gulp.dest ('расстояние')) .pipe (переименовать ('build.min.js')) .pipe (uglify ()) .pipe (gulp.dest ('dist / js')); });
- Эта задача проверяет все файлы JavaScript в нашем каталоге
задача сжатия изображений
- Эта задача проверяет все файлы в нашем каталоге
images
, сжимает их и копирует в каталогdist / images
.
gulp.task ('compress-images', () => { gulp.src ('изображения / *') .pipe (imagemin ()) .pipe (gulp.dest ('расстояние / изображения')) });
- Эта задача проверяет все файлы в нашем каталоге
смотреть задачу
- Эта задача отслеживает изменения, внесенные в наши файлы, и автоматически запускает все наши задачи снова.
gulp.task ('смотреть', () => { gulp.watch ('js / *. js', ['lint', 'scripts']); gulp.watch ('меньше / *. меньше', ['меньше']); глоток.часы ('изображения / *, [' сжатие изображений ']); });
lingo task
- Эта задача является отцом всех задач. На терминале все, что нам нужно сделать, это запустить
gulp lingo
, и все задачи, определенные в нашем gulfile, будут выполняться одной командой!
gulp.task ('lingo', ['less', 'scripts', 'compress-images', 'watch']);
- Эта задача является отцом всех задач. На терминале все, что нам нужно сделать, это запустить
Итак, перейдите к терминалу, попробуйте gulp lingo
и посмотрите, как выполняются все задачи.Это так просто.
Примечание: Убедитесь, что у вас есть папка js
, без
и изображений
с несколькими файлами JavaScript, Less и изображениями соответственно.
Плагины Gulp
Как было продемонстрировано в Project Lingo , мы воспользовались преимуществами экосистемы плагинов Gulp. Плагины Gulp — это строительные блоки для вашего файла gulp.
На https://gulpjs.com/plugins доступно несколько плагинов. Отправляйтесь туда, найдите любой плагин, который может соответствовать вашему варианту использования, и воспользуйтесь им.
Ознакомьтесь с другими популярными плагинами, которые могут сразу оказаться полезными.
- gulp-util
- Содержит всевозможные служебные функции, такие как цветовое кодирование и ведение журнала.
- gulp-nodemon
- Автоматически перезапускает ваш сервер Node.js с помощью
nodemon
.
- Автоматически перезапускает ваш сервер Node.js с помощью
- gulp-strip-debug
- Удаляет все операторы отладки консоли
,
и.
- Удаляет все операторы отладки консоли
- gulp-htmlclean
Gulp Recipes
Есть некоторые задачи, которые вы, возможно, захотите реализовать, но не обязательно знаете, как это сделать. Помимо существующих плагинов Gulp, есть рецепты, которыми вы можете воспользоваться. Некоторые из рецептов, которые вы можете использовать непосредственно в своем проекте, включают:
Ознакомьтесь с большим списком рецептов Gulp.
Помимо: Auth0 Authentication с помощью JavaScript
В Auth0 мы активно используем полнофункциональный JavaScript, чтобы помочь нашим клиентам управлять идентификационными данными пользователей, включая сброс пароля, создание, инициализацию, блокировку и удаление пользователей.Поэтому неудивительно, что использование нашей платформы управления идентификацией в веб-приложениях JavaScript - это совсем несложно.
Auth0 предлагает уровень бесплатного пользования , чтобы начать работу с современной аутентификацией. Проверьте это или зарегистрируйте бесплатную учетную запись Auth0 здесь!
Затем перейдите в раздел «Приложения» на панели инструментов Auth0 и нажмите «Создать приложение». В открывшемся диалоговом окне задайте имя своего приложения и выберите Одностраничные веб-приложения в качестве типа приложения:
После создания приложения нажмите «Настройки» и обратите внимание на назначенный домен и идентификатор клиента. в ваше приложение.Кроме того, в полях Allowed Callback URLs и Allowed Logout URLs укажите URL-адрес страницы, которая будет обрабатывать ответы на вход и выход из системы Auth0. В текущем примере это URL-адрес страницы, которая будет содержать код, который вы собираетесь написать (например, http: // localhost: 8080
).
Теперь в своем проекте JavaScript установите библиотеку auth0-spa-js
следующим образом:
npm install @ auth0 / auth0-spa-js
Затем выполните следующее в своем приложении JavaScript:
импортировать createAuth0Client из '@ auth0 / auth0-spa-js';
let auth0Client;
асинхронная функция createClient () {
return await createAuth0Client ({
домен: 'ВАШ_ДОМЕН',
client_id: 'YOUR_CLIENT_ID',
});
}
асинхронная функция login () {
ждать auth0Client.loginWithRedirect ();
}
function logout () {
auth0Client.logout ();
}
асинхронная функция handleRedirectCallback () {
const isAuthenticated = ждать auth0Client.isAuthenticated ();
if (! isAuthenticated) {
const query = window.location.search;
if (query.includes ('code =') && query.includes ('state =')) {
ждать auth0Client.handleRedirectCallback ();
window.history.replaceState ({}, document.title, '/');
}
}
ждать updateUI ();
}
асинхронная функция updateUI () {
const isAuthenticated = ждать auth0Client.isAuthenticated ();
const btnLogin = document.getElementById ('btn-login');
const btnLogout = document.getElementById ('btn-logout');
btnLogin.addEventListener («щелчок», вход в систему);
btnLogout.addEventListener («щелкнуть», выйти из системы);
btnLogin.style.display = isAuthenticated? 'нет': 'блокировать';
btnLogout.style.display = isAuthenticated? 'блок': 'нет';
if (isAuthenticated) {
const username = document.getElementById ('имя пользователя');
const user = await auth0Client.getUser ();
имя пользователя.innerText = имя_пользователя;
}
}
window.addEventListener ('load', async () => {
auth0Client = ждать createClient ();
ждать handleRedirectCallback ();
});
Замените заполнители
YOUR_DOMAIN
иYOUR_CLIENT_ID
фактическими значениями для домена и идентификатора клиента, которые вы нашли на панели инструментов Auth0.
Затем создайте пользовательский интерфейс со следующей разметкой:
Добро пожаловать
Ваше приложение готово к аутентификации с помощью Auth0!
Ознакомьтесь с документацией Auth0 SPA SDK, чтобы узнать больше об аутентификации и авторизации с помощью JavaScript и Auth0.
Заключение
Теперь вы узнали, как автоматизировать рабочий процесс разработки с помощью GulpJS. В этом руководстве по GulpJS просто рассказывается, как работает Gulp - средство выполнения и автоматизации задач и как с его помощью можно автоматизировать общие задачи в вашем приложении. Я уверен, что Project Lingo теперь обладает высокой производительностью. Все благодаря методам оптимизации, которые мы развернули с помощью GulpJS.
Есть и другие средства запуска задач и инструменты автоматизации, которые вам стоит попробовать.