- PVSM.RU - https://www.pvsm.ru -

Самые нужные плагины для Gulp

Самые нужные плагины для Gulp - 1 [1]

Это пост можно сказать является дубликатом моей предыдущей подборки “Самые нужные плагины для Grunt” [2]. Дело в том, что спустя много часов поиска я не нашел крутых плагинов для Gulp, которых нет для Grunt за исключением пары весьма специфичных утилит. Всё как раз наоборот, но проигнорировать множество пользователей Gulp я не мог. Все недостающие плагины я выделил, потому что Gulp умеет использовать их из Grunt, как и Grunt из Gulp.

Доброго времени суток, всем! Кто-то умный, не помню в какой статье именно на Хабре, буквально недавно размышлял о процессе разработки с явным призывом автоматизировать все, что только можно автоматизировать. И лучше один раз потратить время на автоматизацию, чтобы потом экономить его на протяжении всего проекта.

У веб-разработчиков есть прекрасный инструмент для автоматизации массы задач, который называется Gulp. И моя страсть к таксономии заставила себя собрать огромную коллекцию почти из 100 ценных плагинов для этого сборщика. Думаю многие кто уже использует Gulp найдут для себя что-то нужное, а кто нет, глядя на возможности, получит хорошую мотивацию установить его и понять как эта штука работает.

А еще я выложил подборку на GitHub [1], чтобы каждый мог пополнить коллекцию.

HTML&CSS

autoprefixer [3] — один из самых полезных плагинов, который автоматически расставляет префиксы к CSS свойствам, исходя из статистики caniuse [4]. Важно сказать, что Автопрефиксер это лишь один из множества дополнений в рамках проекта PostCSS [5] от Злых Марсиан.

gulp-browser-sync [6] — вероятно, самый нужный инструмент, с точки зрения повышения продуктивности веб-разработчиков. BrowserSync создает подключение, после чего производит автообновление страницы во всех браузерах на всех устройствах при изменениями не только клиентских или даже серверных файлов. А плюс ко всему синхронизирует позицию скроллинга и заполненные данные в формах.

gulp-useref [7] — парсит специфичные блоки и конкатенирует описанные в них стили и скрипты. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!

gulp-email-design [8] — бесценный инструмент при верстки писем, который переводит все CSS стили в инлайновые, автоматически изменяя все пути к файлам, опционально умеет загружать изображения на CDN и даже отсылать письма на почту.

gulp-uncss [9] — лучшее решение для оптимизации CSS файлов. Плагин анализирует HTML код и находит все неиспользуемые и продублированные стили.

gulp-csso [10] — отличный CSS минификатор. На сегодняшний день существует целый ряд CSS компрессоров и сравнительная таблица (GitHub) по ним. Но недавно я увидел лучшую Shorthand [11] утилиту без Gulp, которая делает приблизительно следующее:

<code>a {
    font-family: Arial;
    font-style: italic;
    font-size: 14px;
    line-height: 18px; 
    font-weight: bold;
    background-image: url('example.png');
    background-color: red;
    background-size: cover;
    background-repeat: no-repeat;
}

=>

a {
  font: italic bold 14px/18px Arial;
  background: red url('example.png') no-repeat / cover;
}
</code>

gulp-htmlmin [12] — простой HTML минификатор.

gulp-csscomb [13] — облагораживает структуру ваших CSS.

gulp-csslint [14] — CSS линтер.

gulp-htmlhint [15] — HTML валидатор.

JavaScript

gulp-autopolyfiller [16] — мега крутой плагин, который похож на Autoprefixer и подбирает все необходимые полифилы для JavaScript, чтобы вы могли использовать последние стандарты ECMAScript уже сегодня. Еще рекомендую gulp-babel [17], который конвертирует ES6/ES7 в ES5.

gulp-jsfmt [18] — полезнейший плагин для работы с JavaScript от команды Rdio, который позволяет искать конкретные фрагменты, форматировать и производить массовые изменения в коде. Также существует gulp-jsbeautifier [19].

gulp-jscs [20] — JavaScript Code Style. Замечательный инструмент со множеством конфигураций для проверки вашего кода в соответствии с существующими стайлгайдами от jQuery, Яндекса, Google, Airbnb и других.

gulp-modernizr [21] — помогает составить правильную архитектуру проекта на основе Modernizr.js в зависимости от возможностей браузера.

gulp-express [22] — запускает Express.js веб-сервер.

gulp-requirejs [23] и gulp-browserify [24] — оптимизируют работу RequireJS и Browserify соответственно.

gulp-plato [25] — предоставляет аналитику по вашему коду с разными метриками в виде красивых графиков.

gulp-complexity [26] — проверка на качество кода основанная на алгоритмах Halstead и Cyclomatic.

fixmyjs [27] — автоматически исправляет простые ошибки в коде после линта выполненного на основе JSHint [28] (gulp-jshint [29]).

gulp-jscpd [30] — для поиска дубликатов в коде.

gulp-jsonlint [31] — валидатор JSON файлов.

gulp-uglify [32] — JavaScript компрессор.

gulp-concat [33] — конкатенация файлов.

Unit тесты

Графика

gulpicon [39] — ценный плагин, который позволяет генерировать спрайты из SVG, переводить их в PNG, записывать все Data URI и подключать нужный формат в зависимости от возможностей браузера.

gulp-iconfont [40] — великолепный плагин для работы с веб-шрифтами. Умеет создавать WOFF, WOFF2, EOT, TTF файлы из SVG.

gulp-responsive [41] — простой способ сгенерировать адаптивные изображения под требуемые разрешения устройств с указанием соответствующих префиксов в наименовании.

gulp-sharp [42] — самый быстрый модуль для работы с JPEG, PNG, WebP и TIFF изображениями. Плагин умеет изменять размер, ориентацию, фон, альфа-канал и многое другое.

gulp-svgstore [43] — объединяет все подключаемые SVG файлы и записывает их в HTML как <symbol> для дальнейшего использования.

gulp-imacss [44] — очень удобная утилита, которая автоматически преобразовывает подключенные в CSS изображения PNG, JPG, SVG в Data URI.

gulp-imagemin [45] и gulp-tinypng [46] для сжатия изображений.

gulp-spritesmith [47] — автоматическая генерация спрайтов.

Разное

gulp-grunt [48] — позволяет запускать Grunt плагины для Gulp.

gulp-watch [49] — краеугольный камень в плагинной системе Gulp. Следит за всеми указанными файлами или целыми директориями и в случае каких-либо изменений выполняет описанные в конфигурациях таски.

gulp-notify [50] — выводит ошибки при сборке Gulp в виде системных сообщений, а главное то, что работает для разных операционных систем.

gulp-git [51] — позволяет использовать Git команды.

gulp-jsdoc [52] — генератор документации, работает на основе JSDoc3.

gulp-rev [53] — полезный плагин для работы с ревизиями.

gulp-release [54] — позволяет управлять версиями в вашем проекте.

gulp-bump [55] — следит за репозиторием и обновляет package.json и gulp-update [56], который обновляет сами пакеты.

gulp-bower-files [57] — подключает все необходимые Bower компоненты.

gulp-removelogs [58] — автоматически удаляет логи.

gulp-preprocess [59] — препроцессор, ссылающийся на установленные конфигурации.

gulp-duration [60] — отображает время выполнения тасков.

gulp-changed [61] и gulp-newer [62] — запускают таски только для изменившихся файлов.

gulp-connect [63] — простой веб-сервер для статических сайтов.

gulp-shell [64] — позволяет запускать Shell команды.

gulp-ssh [65] — обеспечивает возможность подключения по SSH и SFTP.

gulp-zip [66] — архивирует папки и файлы.

gulp-clean [67] и gulp-copy [68] — соответственно очищают и копируют указанные исходники.

gulp-filesize [69] — отображает размеры файлов в удобном для чтения формате.

gulp-util [70] — различные утилиты для разработки Gulp плагинов.

Компиляторы

gulp-less [71] — LESS в CSS.
gulp-sass [72] — SASS/SCSS в СSS.
gulp-compass [73] — SASS с Compass в CSS.
gulp-stylus [74] — Stylus в CSS.
gulp-coffee [75] — CoffeeScript в JavaScript.
gulp-jade [76] — Jade в HTML.
gulp-handlebars [77] — Handlebars шаблоны в JST.
gulp-jst [78] — Underscore шаблоны в JST.
gulp-react [79] — Facebook React’s JSX шаблоны в JST.
gulp-nunjucks [80] — Nunjucks шаблоны в JST.
gulp-dustjs [81] — Dust шаблоны в JST.
gulp-angular-templatecache [82] — AngularJS шаблоны в JST.

Напоследок

psi [83] — PageSpeed Insights with reporting.
tmi [84] — TMI (Too Many Images) — discover your image weight on the web.
ngrok [85] — Introspected tunnels to localhost.
pageres [86] — удобная утилита для создания скриншотов сайтов в разных разрешениях.
Возможно, некоторые методы автоматизации вам будет удобнее использовать прямо в редакторе — Лучшие плагины для SublimeText.
matchdep [87] — помогает правильно описать зависимости.

grunt-html-build [88]
Универсальный помощник в верстке. В отличии от незаслуженно более популярного grunt-processhtml [89], данный плагин умеет не только объединять скрипты и стили, но и создавать полноценные шаблоны/блоки для вашего HTML.

Еще есть отдельный grunt-email-boilerplate [90].

grunt-revizor [91] — мега крутой компрессор от MailRu, который не только минифицирует CSS, но и сокращает названиях всех классов в HTML, CSS и JavaScript файлах.

grunt-penthouse [92] и grunt-criticalcss [93] — автоматически находят Critical Path в вашем проекте. Важный момент с точки зрения производительность, о чем подробнее написано тут [94].

grunt-shipit [95] — автоматизирует deploy с помощью Shipit.

grunt-githooks [96] — привязывает Git Hooks [97] к Grunt таскам.

grunt-gitbook [98] — создавайте документацию с помощью потрясающей утилиты GitBook.

grunt-conventional-changelog [99] — генерирует список изменений на основе коммитов в Git.

grunt-proxy [100] and grunt-connect-proxy [101] — connect support for proxying API calls during development.

grunt-phantomas [102] — превосходный инструмент для измерения производительности проекта.

grunt-usebanner [103] — добавляет баннеры (копирайт или ASCII заголовки) в исходных файлах и grunt-figlet [104] для помощи работы с этим.

Автор: ilusha_sergeevich

Источник [105]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/javascript/85449

Ссылки в тексте:

[1] Image: https://github.com/Pestov/essential-gulp-plugins

[2] “Самые нужные плагины для Grunt”: http://habrahabr.ru/post/251157/

[3] autoprefixer: https://github.com/postcss/autoprefixer

[4] caniuse: http://caniuse.com/

[5] PostCSS: https://github.com/postcss/postcss

[6] gulp-browser-sync: https://github.com/BrowserSync/gulp-browser-sync

[7] gulp-useref: https://github.com/jonkemp/gulp-useref

[8] gulp-email-design: https://github.com/alexshk/gulp-email-design

[9] gulp-uncss: https://github.com/addyosmani/gulp-uncss-task

[10] gulp-csso: https://github.com/ben-eb/gulp-csso

[11] Shorthand: https://github.com/frankmarineau/shorthand

[12] gulp-htmlmin: https://github.com/jonschlinkert/gulp-htmlmin

[13] gulp-csscomb: https://github.com/koistya/gulp-csscomb

[14] gulp-csslint: https://www.npmjs.com/package/gulp-csslint

[15] gulp-htmlhint: https://github.com/bezoerb/gulp-htmlhint

[16] gulp-autopolyfiller: https://github.com/azproduction/gulp-autopolyfiller

[17] gulp-babel: https://github.com/babel/gulp-babel

[18] gulp-jsfmt: https://www.npmjs.com/package/gulp-jsfmt

[19] gulp-jsbeautifier: https://github.com/tarunc/gulp-jsbeautifier

[20] gulp-jscs: https://github.com/jscs-dev/gulp-jscs

[21] gulp-modernizr: https://github.com/doctyper/gulp-modernizr

[22] gulp-express: https://github.com/gimm/gulp-express

[23] gulp-requirejs: https://github.com/robinthrift/gulp-requirejs

[24] gulp-browserify: https://github.com/deepak1556/gulp-browserify

[25] gulp-plato: https://github.com/sindresorhus/gulp-plato

[26] gulp-complexity: https://github.com/alexeyraspopov/gulp-complexity

[27] fixmyjs: https://github.com/kirjs/gulp-fixmyjs

[28] JSHint: http://jshint.com/

[29] gulp-jshint: https://github.com/spalger/gulp-jshint

[30] gulp-jscpd: https://github.com/yannickcr/gulp-jscpd

[31] gulp-jsonlint: https://github.com/rogeriopvl/gulp-jsonlint

[32] gulp-uglify: https://github.com/terinjokes/gulp-uglify

[33] gulp-concat: https://github.com/wearefractal/gulp-concat

[34] gulp-nodeunit: https://github.com/kjvalencik/gulp-nodeunit

[35] gulp-jasmine: https://github.com/sindresorhus/gulp-jasmine

[36] gulp-qunit: https://github.com/jonkemp/gulp-qunit

[37] gulp-mocha: https://github.com/sindresorhus/gulp-mocha

[38] gulp-karma: https://github.com/karma-runner/gulp-karma

[39] gulpicon: https://github.com/wakayama-io/gulpicon/

[40] gulp-iconfont: https://github.com/nfroidure/gulp-iconfont

[41] gulp-responsive: https://github.com/mahnunchik/gulp-responsive

[42] gulp-sharp: https://github.com/rizalp/gulp-sharp

[43] gulp-svgstore: https://github.com/w0rm/gulp-svgstore

[44] gulp-imacss: https://github.com/akoenig/imacss

[45] gulp-imagemin: https://github.com/sindresorhus/gulp-imagemin

[46] gulp-tinypng: https://github.com/creativeaura/gulp-tinypng

[47] gulp-spritesmith: https://github.com/otouto/gulp-spritesmith

[48] gulp-grunt: https://github.com/gratimax/gulp-grunt

[49] gulp-watch: https://github.com/floatdrop/gulp-watch

[50] gulp-notify: https://github.com/mikaelbr/gulp-notify

[51] gulp-git: https://github.com/stevelacy/gulp-git

[52] gulp-jsdoc: https://github.com/jsBoot/gulp-jsdoc

[53] gulp-rev: https://github.com/sindresorhus/gulp-rev

[54] gulp-release: https://github.com/pasangsherpa/gulp-release

[55] gulp-bump: https://github.com/stevelacy/gulp-bump

[56] gulp-update: https://github.com/tounano/gulp-update

[57] gulp-bower-files: https://github.com/ck86/gulp-bower-files

[58] gulp-removelogs: https://github.com/hemanth/gulp-removelogs

[59] gulp-preprocess: https://github.com/jas/gulp-preprocess

[60] gulp-duration: https://github.com/hughsk/gulp-duration

[61] gulp-changed: https://github.com/sindresorhus/gulp-changed

[62] gulp-newer: https://www.npmjs.com/package/gulp-newer

[63] gulp-connect: https://github.com/avevlad/gulp-connect

[64] gulp-shell: https://github.com/sun-zheng-an/gulp-shell

[65] gulp-ssh: https://github.com/teambition/gulp-ssh

[66] gulp-zip: https://www.npmjs.com/package/gulp-zip

[67] gulp-clean: https://github.com/peter-vilja/gulp-clean

[68] gulp-copy: https://github.com/klaascuvelier/gulp-copy

[69] gulp-filesize: https://github.com/Metrime/gulp-filesize

[70] gulp-util: https://github.com/gulpjs/gulp-util

[71] gulp-less: https://github.com/plus3network/gulp-less

[72] gulp-sass: https://github.com/dlmanning/gulp-sass

[73] gulp-compass: https://github.com/appleboy/gulp-compass

[74] gulp-stylus: https://github.com/LearnBoost/stylus

[75] gulp-coffee: https://github.com/wearefractal/gulp-coffee

[76] gulp-jade: https://github.com/phated/gulp-jade

[77] gulp-handlebars: https://github.com/lazd/gulp-handlebars

[78] gulp-jst: https://github.com/rdmurphy/gulp-jst

[79] gulp-react: https://github.com/sindresorhus/gulp-react

[80] gulp-nunjucks: https://github.com/sindresorhus/gulp-nunjucks

[81] gulp-dustjs: https://github.com/sindresorhus/gulp-dust

[82] gulp-angular-templatecache: https://github.com/miickel/gulp-angular-templatecache

[83] psi: https://github.com/addyosmani/psi

[84] tmi: https://github.com/addyosmani/tmi

[85] ngrok: https://ngrok.com/

[86] pageres: https://github.com/sindresorhus/pageres

[87] matchdep: https://github.com/tkellen/node-matchdep

[88] grunt-html-build: https://github.com/spatools/grunt-html-build

[89] grunt-processhtml: https://github.com/dciccale/grunt-processhtml

[90] grunt-email-boilerplate: https://github.com/dwightjack/grunt-email-boilerplate

[91] grunt-revizor: https://github.com/atrolov/grunt-revizor

[92] grunt-penthouse: https://github.com/fatso83/grunt-penthouse

[93] grunt-criticalcss: https://github.com/filamentgroup/grunt-criticalcss

[94] тут: http://www.phpied.com/css-and-the-critical-path/

[95] grunt-shipit: https://github.com/shipitjs/grunt-shipit

[96] grunt-githooks: https://github.com/wecodemore/grunt-githooks

[97] Git Hooks: http://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks

[98] grunt-gitbook: https://github.com/GitbookIO/grunt-gitbook

[99] grunt-conventional-changelog: https://github.com/btford/grunt-conventional-changelog

[100] grunt-proxy: https://github.com/tutukin/grunt-proxy

[101] grunt-connect-proxy: https://github.com/drewzboto/grunt-connect-proxy

[102] grunt-phantomas: https://github.com/stefanjudis/grunt-phantomas

[103] grunt-usebanner: https://github.com/mattstyles/grunt-banner

[104] grunt-figlet: https://github.com/patorjk/grunt-figlet

[105] Источник: http://habrahabr.ru/post/252745/