Grunt является JavaScript задачи бегун , инструментом , используемым для автоматического выполнения частых задач , таких как минификация , компиляция , тестирование модулей и пылеобразование . Он использует интерфейс командной строки для запуска пользовательских задач, определенных в файле (известном как Gruntfile). Грунт был создан Беном Alman и написано в Node.js . Распространяется через npm . По состоянию на сентябрь 2016 года в экосистеме Grunt было доступно более 5000 плагинов. [5]
Автор (ы) оригинала | Бен Альман |
---|---|
Разработчики) | Бен Алман, Тайлер Келлен, Кайл Робинсон Янг, Влад Филиппов, Синдре Сорхус, Исаак Дуразо, Джаррод Оверсон, Тим Браньен, Йорн Заефферер, Джеймс Смит, Дэйв Геддес |
Первый выпуск | 4 апреля 2016 г . [1] |
Стабильный выпуск | 1.3.0 / 18 августа 2020 г . [2] |
Репозиторий | github |
Написано в | JavaScript |
Операционная система | Linux , macOS , Windows |
Платформа | Node.js |
Доступно в | английский |
Тип | Средство выполнения задач, инструмент сборки |
Лицензия | Лицензия MIT [3] [4] |
Веб-сайт | gruntjs |
Компании, использующие Grunt, включают Adobe Systems , jQuery , Twitter , Mozilla , Bootstrap , Cloudant , Opera , WordPress , Walmart и Microsoft . [5]
Обзор
Первоначально Grunt был создан Беном Алманом в 2012 году как эффективная альтернатива для упрощения написания и поддержки набора задач процесса сборки JavaScript в одном огромном файле. Он был разработан в качестве задачи на основе командной строки инструмента для сборки проектов JavaScript. [6]
Grunt в основном используется для автоматизации рутинных задач. Существуют тысячи подключаемых модулей, которые можно установить и использовать непосредственно для выполнения некоторых часто используемых задач. Одной из наиболее желательных функций Grunt является то, что он легко настраивается, т. Е. Позволяет разработчикам добавлять, расширять и изменять пользовательские задачи в соответствии с их личными потребностями; у каждой задачи есть набор параметров конфигурации, которые могут быть установлены пользователем. Более того, Grunt предлагает возможность определять собственные задачи, которые могут объединять несколько существующих задач в одну или добавлять совершенно новые функции. [7]
Основные понятия
Интерфейс командной строки
Интерфейс командной строки (CLI) Grunt может быть установлен глобально через npm . Выполнение grunt
команды загрузит и запустит версию Grunt, локально установленную в текущем каталоге. Следовательно, мы можем поддерживать разные версии Grunt в разных папках и выполнять каждую по своему желанию. [5]
Файлы
Чтобы использовать Grunt в проекте, в корневом каталоге необходимо создать два определенных файла, а именно package.json и Gruntfile.
- package.json - содержит метаданные для проекта, включая имя, версию, описание, авторов, лицензии и их зависимости (плагины Grunt, необходимые для проекта). Все зависимости перечислены либо в разделе,
dependencies
либо вdevDependencies
разделе. - Gruntfile - допустимый файл JavaScript или CoffeeScript с именем «Gruntfile.js» или «Gruntfile.coffee», который содержит код для настройки задач, загрузки существующих плагинов и / или создания пользовательских задач.
Задачи
Задачи - это модули, которые выполняют указанную работу. Они определены в файле Gruntfile.
Разработчики могут загружать предопределенные задачи из существующих плагинов Grunt и / или писать собственный код для определения своих собственных задач в зависимости от своих требований. После определения эти задачи можно запускать из командной строки, просто выполнив grunt
. Если
в Gruntfile определено значение «по умолчанию»grunt
, достаточно просто выполнить .
Пример
Ниже приведен пример файла Gruntfile, написанного на JavaScript, который показывает, как загружать плагины, создавать собственные задачи и настраивать их:
модуль . export = function ( grunt ) { // Конфигурация задачи grunt . initConfig ({ taskName1 : 'Task1 Configuration' , taskName2 : 'Task2 Configuration' }); // Загружает плагины grunt . loadNpmTasks ( 'pluginName1' ); хрюкать . loadNpmTasks ( 'pluginName2' ); // Пользовательские задачи ворчание . registerTask ( 'customTaskName1' , 'Пользовательское описание задачи' , function ( taskParameter ) { // Пользовательские операторы }); // Объединение нескольких задач в одну задачу grunt . registerTask ( 'customTaskName2' , [ 'taskName1' , 'customTaskName1' ]); // Задача по умолчанию - запускается, если имя задачи не указано grunt . registerTask ( 'по умолчанию' , [ 'customTaskName2' ]);};
В приведенном выше примере будет выполняться grunt
команда,
которая была определена выше как комбинация обоих
и
.
Плагины
Плагины - это многократно используемый код, который определяет набор задач. Каждый плагин внутренне содержит каталог задач с файлами JavaScript, которые имеют тот же синтаксис, что и Gruntfile. Большинство плагинов Grunt публикуются с ключевым словом gruntplugin
[8] в npm и префиксом grunt
. Это помогает Grunt отображать все плагины в списке плагинов Grunt . Плагины, официально поддерживаемые Grunt, имеют префикс grunt-contrib
[8] и также отмечены звездочкой в списке плагинов. Некоторые популярные плагины включают grunt-contrib-watch , grunt-contrib-clean , grunt-contrib-uglify .
Разработчики могут даже создавать свои собственные плагины Grunt с помощью grunt-init
плагина и публиковать их в npm с помощью npm publish
команды.
Преимущества
Ниже приведены некоторые из преимуществ использования Grunt:
- Все исполнители задач обладают следующими свойствами: согласованность, эффективность, результативность, повторяемость и т. Д.
- Доступ ко многим предопределенным плагинам, которые можно использовать для работы с задачами JavaScript и статическим контентом.
- Позволяет пользователям настраивать задачи с помощью предопределенных плагинов.
- Предпочитает конфигурационный подход к кодированию.
- Позволяет пользователям добавлять свои собственные плагины и публиковать их в npm .
Сравнение
Муравей
Ant или Apache Ant - это инструмент сборки на основе Java . Ant имеет чуть более сотни встроенных задач, которые лучше подходят для проектов со структурой сборки Java. Написание собственного кода в Ant требует, чтобы пользователи написали файл JAR и ссылались на него из XML . Это добавило бы ненужных сложностей к проектам, которые сами не требуют Java. Конфигурации сборки Ant перечислены в XML, а не в формате JSON . [7]
Грабли
Rake позволяет разработчикам определять задачи на Ruby . В Rake нет концепции плагинов или предопределенных задач, что означает, что все необходимые действия должны быть написаны, а затем выполнены. Это делает разработку дорогостоящей по сравнению с Grunt, который имеет большой набор плагинов многократного использования. [7]
Глоток
Gulp.js - это инструмент запуска задач на основе JavaScript, похожий на Grunt, поскольку оба они следуют модульной архитектуре и основаны на npm . Задачи Gulp определяются кодом, а не конфигурацией. Gulp быстрее, чем Grunt. Grunt использует временные файлы для передачи вывода от одной задачи к другой, тогда как в Gulp файлы передаются между задачами по конвейеру . [7]
Смотрите также
- Node.js
- Npm
- Автоматизация сборки
- Список программного обеспечения для автоматизации сборки
- Apache Maven
- Грабли
- Йомен (вычисления)
- Modernizr
Рекомендации
- ^ «Дата выпуска версии 1.0.0» . Проверено 31 декабря 2020 .
- ^ «Релизы · gruntjs / grunt» . Проверено 31 декабря 2020 .
- ^ "ЛИЦЕНЗИОННЫЙ файл на GitHub" . Проверено 31 декабря 2020 .
- ^ "Лицензионное поле от grunt - npm" . Проверено 31 декабря 2020 .
- ^ а б в «Ворчание: Средство выполнения задач JavaScript» . gruntjs.com . Проверено 14 сентября 2016 .
- ^ «Представляем Grunt - Открытый исходный код, производительность, инструменты и рабочий процесс - Bocoup» . bocoup.com . Проверено 14 сентября 2016 .
- ^ а б в г Крайер, Джеймс (2015). Pro Grunt.js . Апресс. п. 1. ISBN 978-1-4842-0013-1.
- ^ а б Пиллора, Хайме (2014). Начало работы с Grunt: средство выполнения задач JavaScript . Livery Place 35 Livery Street Birmingham B3 2PB, UK: Packt Publishing Ltd. ISBN 978-1-78398-062-8.CS1 maint: location ( ссылка )
дальнейшее чтение
- Крайер, Джеймс (2015). Pro Grunt.js . Апресс. ISBN 978-1-4842-0013-1.
- Пиллора, Джейми (2014). Начало работы с Grunt: средство выполнения задач JavaScript . Packt Publishing Ltd. ISBN 978-1-78398-062-8.
Внешние ссылки
- Официальный веб-сайт
- Grunt на GitHub