Для чего нужен Grunt?

Я пытаюсь попасть в Grunt, к которому я новичок, но я не понимаю его полезности.

Я понимаю, что это задача. Я понимаю, что он может использоваться для выполнения таких действий, как bundle, uglify, jshint, minify и т.д. И т.д. И т.д., Что может быть превращено в скриптовую задачу.

Но я не вижу, какую пользу это дает. Почти все они могут быть запущены из командной строки в любом случае, то есть вы можете просто объединить их с помощью простой оболочки script. Мне кажется, что настройка grunt + gruntfiles и написание задач - это больше работы, чем создание оболочки script, а не меньше.

Что мне не хватает об этом?

Ответ 1

Grunt - это в основном менеджер сборки/задачи, написанный поверх NodeJS. Я бы назвал его эквивалентом стека NodeJS ANT для Java. Вот некоторые общие сценарии, которые вы хотели бы использовать grunt в:

  • У вас есть проект с файлами javascript, требующими минимализации, и, как правило, генерировать переднюю сборку отдельно (в случае, если вы используете JAVA для своего бэкэнд). (Грунт-вно-уродовать)
  • Когда вы сохраняете код на своем компьютере во время разработки, вы хотите, чтобы браузер автоматически перезагружал вашу страницу (может показаться маленькой, но поверьте мне, это сэкономило мне много времени). (Живая перезагрузка)
  • Когда разработчик сохраняет код на своей машине, он хочет показать полный список ошибок JS/общих нарушений лучшей практики. (Грунт-вно-jshint)
  • У вас есть проект с файлами SASS/LESS, которые необходимо скомпилировать в файлы CSS на машине разработчиков во время разработки. Например, всякий раз, когда он сохраняет файл SASS, вы хотите, чтобы он был автоматически скомпилирован в файл CSS, для включения на вашей странице. (Грунт-вно-Sass)
  • У вас есть команда разработчиков интерфейсов, которые работают с пользовательским интерфейсом, и команда разработчиков бэкэнд, работающих на бэкэнд, вы хотите, чтобы передние разработчики использовали базовый REST API без необходимости компилировать и разворачивать код каждый раз на своих машинах. В случае, если вам интересно, это невозможно с типичной настройкой веб-сервера, поскольку XHR не допускается для междоменного доступа браузером. Grunt может настроить прокси-сервер для перенаправления запросов XHR на вашу собственную систему в пределах сервера соединения grunt в другую систему! (grunt-contrib-proxy, grunt-contrib-connect)

Я не думаю, что ваша оболочка script может выполнять ВСЕ из них. Подводя итог, да, создание Gruntfile.js является утомительным для тех, кто мало подвержен JavaScript javascript/является новым для nodeJS, я прошел те же самые усилия, что и ученик, но Grunt - замечательная часть программного обеспечения. Потратьте время на настройку надлежащего Gruntfile.js для своего проекта переднего плана, и вы поблагодарите бога за то, что вы сделали вашу жизнь намного проще:)

Преимущество vs shell script:

  • Если вы пишете оболочку script для каждой из этих задач, утомительно поддерживать, а затем настраивать для каждой из ваших потребностей. Gruntfile.js на самом деле довольно легко. есть конфиг, с которым вы его запускаете, указав, какие задачи вы хотите выполнить, источники и цели для каждого.

  • Интеграция с генераторами семян проекта на Yeoman, Gulp является еще одним важным фактором для рассмотрения. Yeoman и Gulp поставляются с Gruntfile.js 'с интеллектуальными значениями по умолчанию. Для кого-то, кто является единственным вкладчиком пользовательского интерфейса в своей команде, это бесценно для меня!

  • Для тех, кто работает над внешними технологиями, если у вас более одного человека, работающего с вами, его довольно легко познакомиться с Grunt, который уже хорошо документирован с большим количеством ответов на SO, чем узнать ваши сценарии оболочки. Это может быть фактором в больших командах.

  • Многочисленные плагины для Grunt расширяют функциональность базы. Если ваша оболочка script ОЧЕНЬ популярна и ОЧЕНЬ модульная, я не вижу для нее плагинов. Это также распространяется на включение в проект новых технологий переднего плана. Скажем, если вы хотите использовать typescript в своем проекте завтра, ваша оболочка script должна будет включить это и учитывать его с вашими собственными усилиями. С Grunt это так же просто, как "npm install" и добавление конфига.

Ответ 2

Несмотря на то, что я согласен с большинством преимуществ, указанных в Принятый ответ, мне все же приходится учитывать недостатки, которые выделяет Кит Сиркель в Почему мы должны прекратить использование Grunt и Gulp

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