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

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

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

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

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

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

HTML&CSS

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

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

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

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

grunt-uncss [10] и grunt-ucss [11] — одновременно два лучших решения для оптимизации CSS файлов. Оба плагина анализируют HTML код и находят все неиспользуемые и продублированные стили. Второй проект от команды Opera Software.

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

На этот моменте я хочу остановить поподробнее. На сегодняшний день существует целый ряд CSS компрессоров и сравнительная таблица [13] (GitHub [14]) по ним. Но недавно я видел оптимизатор, который выполняет приблизительно следующее:

a {
    font-family: Arial;
    font-style: italic;
    font-size: 14px;
    line-height: 18px; 
    font-weight: bold;
}

=>

a {
    font: italic 700 14px/18px Arial;
}

И также для background и других комбинируемых свойств. Но к сожалению, я его благополучно потерял. Если кто-то увидит нечто подобное, просьба сделать pull-request, поскольку подобный инструмент вместе с Revizor станет лучшим компрессором CSS когда либо.

grunt-contrib-htmlmin [15] — простой HTML минификатор.

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

grunt-csscomb [19] — облагораживает структуру ваших CSS. Еще есть grunt-styleguide [20] для генерации стайлгайдов.

grunt-contrib-csslint [21] — CSS линтер.

grunt-html [22] — HTML валидатор на основе валидатора от W3C.

JavaScript

grunt-autopolyfiller [23] — мега крутой плагин, который похож на Autoprefixer и подбирает все необходимые полифилы для JavaScript, чтобы вы могли использовать последние стандарты ECMAScript уже сегодня.

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

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

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

grunt-contrib-requirejs [28] и grunt-browserify [29] — оптимизируют работу RequireJS и Browserify соответственно.

grunt-wiredep [30] — подключает все необходимые Bower компоненты.

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

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

fixmyjs [33] — автоматически исправляет простые ошибки в коде после линта выполненного на основе JSHint [34] (grunt-contrib-jshint [35]).

grunt-jsonlint [36] и grunt-yamllint [37] — валидаторы JSON и YAML файлов.

grunt-contrib-uglify [38] — JavaScript компрессор.

grunt-contrib-concat [39] — конкатенация файлов.

Unit тесты

Графика

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

grunt-webfont [46] — великолепный плагин для работы с веб-шрифтами. Умеет создавать WOFF, WOFF2, EOT, TTF файлы из SVG. Работает на Mac, Windows и Linux. Отражает результат в демо страничке любой вариации: CSS/Sass/LESS/Stylus, в Bootstrap или BEM стилистике, с лигатурами и Data URI.

grunt-responsive-images [47] — простой способ сгенерировать адаптивные изображения под требуемые разрешения устройств с указанием соответствующих префиксов в наименовании. А grunt-responsive-images-extender [48] делает тоже самое, но с выборкой по селекторам и записью в srcset.

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

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

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

grunt-contrib-imagemin [52], grunt-imageoptim [53] и grunt-tinypng [54] для сжатия изображений.

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

Разное

assemble [56] — данный плагин есть целый генератор статических сайтов для Node.js, Grunt.js и Yeoman с шаблонизатором Handlebars. Используется в таких проектах как Zurb Foundation, Zurb Ink, H5BP/Effeckt, Less.js / lesscss.org, Topcoat, Web Experience Toolkit и др.

jit-grunt [57] — JIT(Just In Time) подгрузчик. Некоторые разработчики критикуют Grunt за достаточно длительное время работы при множестве подключенных файлов. Кстати, именно по этой причине появился Gulp, но данный плагин полностью решает проблему производительности. Также хочу упомянуть grunt-concurrent [58], предназначенный для той же цели и grunt-gulp [59], который позволяет запускать Gulp плагины для Grunt.

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

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

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

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

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

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

grunt-conventional-changelog [67] — генерирует список изменений на основе коммитов в Git. А есть grunt-bump [68], который следит таким же образом следит за репозиторием и обновляет package.json.

grunt-remove-logging [69] — автоматически удаляет логи.

node-matchdep [70] — помогает правильно описать зависимости.

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

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

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

grunt-open [74] — открывает URL и файлы в зависимости от указанных опций.

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

grunt-exec [76] и grunt-shell [77] — позволяют запускать Shell команды.

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

grunt-contrib-compress [79] — архивирует папки и файлы.

grunt-contrib-clean [80] и grunt-contrib-copy [81] — соответственно очищают и копируют указанные исходники.

Компиляторы

grunt-contrib-less [82] — LESS в CSS.
grunt-contrib-sass [83] — SASS/SCSS в СSS.
grunt-contrib-compass [84] — SASS с Compass в CSS.
grunt-contrib-stylus [85] — Stylus в CSS.
grunt-contrib-coffee [86] — CoffeeScript в JavaScript.
grunt-contrib-jade [87] — Jade в HTML.
grunt-contrib-handlebars [88] — Handlebars шаблоны в JST.
grunt-contrib-jst [89] — Underscore шаблоны в JST.
grunt-react [90] — Facebook React’s JSX шаблоны в JST.
grunt-nunjucks [91] — Nunjucks шаблоны в JST.
grunt-dustjs [92] — Dust шаблоны в JST.
grunt-html2js [93] — AngularJS шаблоны в JST.

Напоследок

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

Автор: ilusha_sergeevich

Источник [99]


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

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

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

[1] выложил подборку на GitHub: https://github.com/Pestov/essential-grunt-plugins

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

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

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

[5] grunt-browser-sync: https://github.com/BrowserSync/grunt-browser-sync

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

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

[8] grunt-email-design: https://github.com/leemunroe/grunt-email-design

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

[10] grunt-uncss: https://github.com/addyosmani/grunt-uncss

[11] grunt-ucss: https://github.com/ullmark/grunt-ucss

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

[13] сравнительная таблица: http://goalsmashers.github.io/css-minification-benchmark/

[14] GitHub: https://github.com/GoalSmashers/css-minification-benchmark

[15] grunt-contrib-htmlmin: https://github.com/gruntjs/grunt-contrib-htmlmin

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

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

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

[19] grunt-csscomb: https://github.com/csscomb/grunt-csscomb

[20] grunt-styleguide: https://github.com/indieisaconcept/grunt-styleguide

[21] grunt-contrib-csslint: https://www.npmjs.com/package/grunt-contrib-csslint

[22] grunt-html: https://github.com/jzaefferer/grunt-html

[23] grunt-autopolyfiller: https://github.com/azproduction/grunt-autopolyfiller/

[24] grunt-jsfmt: https://github.com/james2doyle/grunt-jsfmt

[25] grunt-jsbeautifier: https://github.com/vkadam/grunt-jsbeautifier

[26] grunt-jscs: https://github.com/jscs-dev/grunt-jscs

[27] grunt-modernizr: https://github.com/Modernizr/grunt-modernizr

[28] grunt-contrib-requirejs: https://github.com/gruntjs/grunt-contrib-requirejs

[29] grunt-browserify: https://github.com/jmreidy/grunt-browserify

[30] grunt-wiredep: https://github.com/stephenplusplus/grunt-wiredep

[31] grunt-plato: https://github.com/jsoverson/grunt-plato

[32] grunt-complexity: https://github.com/vigetlabs/grunt-complexity

[33] fixmyjs: https://github.com/jonschlinkert/grunt-fixmyjs

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

[35] grunt-contrib-jshint: https://github.com/gruntjs/grunt-contrib-jshint

[36] grunt-jsonlint: https://github.com/brandonramirez/grunt-jsonlint

[37] grunt-yamllint: https://github.com/geedew/grunt-yamllint

[38] grunt-contrib-uglify: https://github.com/gruntjs/grunt-contrib-uglify

[39] grunt-contrib-concat: https://github.com/gruntjs/grunt-contrib-concat

[40] grunt-contrib-nodeunit: https://github.com/gruntjs/grunt-contrib-nodeunit

[41] grunt-contrib-jasmine: https://www.npmjs.com/package/grunt-contrib

[42] grunt-contrib-qunit: https://github.com/gruntjs/grunt-contrib-qunit

[43] grunt-mocha: https://github.com/kmiyashiro/grunt-mocha

[44] grunt-karma: https://github.com/karma-runner/grunt-karma

[45] grunticon: http://frontender.info/grunticon/

[46] grunt-webfont: https://github.com/sapegin/grunt-webfont

[47] grunt-responsive-images: https://github.com/andismith/grunt-responsive-images

[48] grunt-responsive-images-extender: https://github.com/smaxtastic/grunt-responsive-images-extender

[49] grunt-sharp: https://www.npmjs.com/package/grunt-sharp

[50] grunt-svgstore: https://github.com/FWeinb/grunt-svgstore

[51] imacss: https://github.com/akoenig/imacss

[52] grunt-contrib-imagemin: https://github.com/gruntjs/grunt-contrib-imagemin

[53] grunt-imageoptim: https://github.com/JamieMason/grunt-imageoptim

[54] grunt-tinypng: https://github.com/marrone/grunt-tinypng

[55] grunt-spritesmith: https://github.com/Ensighten/grunt-spritesmith

[56] assemble: https://github.com/assemble/assemble

[57] jit-grunt: https://github.com/shootaroo/jit-grunt

[58] grunt-concurrent: https://github.com/sindresorhus/grunt-concurrent

[59] grunt-gulp: https://github.com/shama/grunt-gulp

[60] grunt-contrib-watch: https://github.com/gruntjs/grunt-contrib-watch

[61] grunt-notify: https://github.com/dylang/grunt-notify

[62] grunt-git: https://github.com/rubenv/grunt-git

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

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

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

[66] grunt-jsdoc: https://github.com/krampstudio/grunt-jsdoc

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

[68] grunt-bump: https://github.com/vojtajina/grunt-bump

[69] grunt-remove-logging: https://github.com/ehynds/grunt-remove-logging

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

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

[72] grunt-preprocess: https://github.com/jsoverson/grunt-preprocess

[73] grunt-rev: https://github.com/cbas/grunt-rev

[74] grunt-open: https://github.com/jsoverson/grunt-open

[75] grunt-contrib-connect: https://github.com/gruntjs/grunt-contrib-connect

[76] grunt-exec: https://github.com/jharding/grunt-exec

[77] grunt-shell: https://github.com/sindresorhus/grunt-shell

[78] grunt-ssh: https://github.com/chuckmo/grunt-ssh

[79] grunt-contrib-compress: https://github.com/gruntjs/grunt-contrib-compress

[80] grunt-contrib-clean: https://github.com/gruntjs/grunt-contrib-clean

[81] grunt-contrib-copy: https://github.com/gruntjs/grunt-contrib-copy

[82] grunt-contrib-less: https://github.com/gruntjs/grunt-contrib-less

[83] grunt-contrib-sass: https://github.com/gruntjs/grunt-contrib-sass

[84] grunt-contrib-compass: https://github.com/gruntjs/grunt-contrib-compass

[85] grunt-contrib-stylus: https://github.com/gruntjs/grunt-contrib-stylus

[86] grunt-contrib-coffee: https://github.com/gruntjs/grunt-contrib-coffee

[87] grunt-contrib-jade: https://github.com/gruntjs/grunt-contrib-jade

[88] grunt-contrib-handlebars: https://github.com/gruntjs/grunt-contrib-handlebars

[89] grunt-contrib-jst: https://github.com/gruntjs/grunt-contrib-jst

[90] grunt-react: https://github.com/ericclemmons/grunt-react

[91] grunt-nunjucks: https://github.com/jlongster/grunt-nunjucks

[92] grunt-dustjs: https://github.com/STAH/grunt-dustjs

[93] grunt-html2js: https://github.com/karlgoldstein/grunt-html2js

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

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

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

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

[98] Лучшие плагины для SublimeText: http://habrahabr.ru/post/235901/

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