Программирование на Python и Objective-C в Mac OS

Программирование на Python и Objective-C под Mac OS и для iPhone / iPod Touch

Gulp плагины: Самые нужные плагины для Gulp / Хабр

Содержание

Что такое плагины 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’, ‘&gt; 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. Есть два варианта организации медиа-запросов.

  1. Писать медиа-запросы ко всему блоку в конце файла.
  2. Писать медиа-запросы в самом селекторе, используя @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.

Для нового проекта установка будет выглядеть так:

  1. Инициализировать npm в папке проекта: npm init
  2. Установить для проекта Gulp: npm install --save-dev gulp и Babel: npm install --save-dev babel-core babel-preset-es2015
  3. В файле package.json (он появится после выполнения инициализации npm) добавить в раздел со скриптами команду для запуска Gulp:



    «scripts»: {

      «gulp»: «./node_modules/gulp/bin/gulp.js»

    }




    Благодаря этому, сборка запускается командой npm run gulp.

  4. Теперь надо создать в папке проекта файл .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

902 файлы в каталоге 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

description gulp-autopolyfiller Это то же самое, что autoprefixer, включая необходимый полифилл для JavaScript gulp-jsfmt Используется для поиска определенных фрагментов кода

90sc225 gulp.

Используется для проверки стиля кода JavaScript gulp-modernizr Указывает функции HTML, CSS и JavaScript, предоставляемые браузером пользователя gulp-express Запущен gulp Express.js веб-сервер gulp-requirejs Используйте require.js для объединения модулей require.js AMD в один файл gulp-plato Создать отчет анализа сложности gulp-сложность Проанализирована сложность сложность и ремонтопригодность кода fixmyjs Фиксированные результаты JSHint gulp-jscpd Используется как детектор копирования / вставки для исходного кода gulp-jsonlint Is

gulp-uglify Минифицированные файлы JavaScript gulp-concat Связать файлы CSS

Модуль модульного тестирования

Подключаемый модуль описание Запустить модульный тест узла 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 ('по умолчанию'));
      });  
  • less task

    • Эта задача проверяет все файлы Less в нашем каталоге less , компилирует их в CSS и копирует в каталог dist / css .Если вы чаще используете sass, есть плагин gulp-sass для компиляции ваших файлов sass в CSS.
      gulp.task ('less', () => {
          вернуть gulp.src ('меньше / *. меньше')
              .pipe (меньше ())
              .pipe (gulp.dest ('dist / css'));
      });  
  • задача сценариев

    • Эта задача проверяет все файлы 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'));
      });  
  • задача сжатия изображений

    • Эта задача проверяет все файлы в нашем каталоге 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 .
  • 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.

Есть и другие средства запуска задач и инструменты автоматизации, которые вам стоит попробовать.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *