Для чого потрібен Grunt?


77

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

Я розумію, що це керувач завданнями. Я розумію, що з його допомогою можна робити такі речі, як пакет, uglify, jshint, мініфікація тощо, тощо, тощо, все, що можна перетворити на сценарій.

Але я не бачу, яку перевагу це дає. Майже всі вони можуть бути запущені з командного рядка в будь-якому випадку, тобто ви можете просто комбінувати їх, використовуючи простий скрипт оболонки. Мені здається, що налаштування grunt + gruntfiles та написання завдань - це більше, ніж робота над написанням скрипта оболонки, ніж менша.

Чого мені не вистачає з цього приводу?


2
grunt виводить хрюкання з проектів. завдання, на якому запущено оптимізатор javascript, css lint та багато іншого. писати власні сценарії оболонки не ідеально. Налаштування бурчання досить просто у порівнянні.
поверх

Я дуже новачок у бурчаннях ... Чи можете ви дати мені пропозицію щодо того, як Дженкінс будувати з бурчанням для кутового проекту
Naanii,

Відповіді:


140

Grunt - це, в основному, менеджер збірки / завдання, написаний поверх NodeJS. Я б назвав це еквівалентом стеку NodeJS ANT для Java. Ось декілька поширених сценаріїв, в яких ви хотіли б використовувати grunt:

  1. У вас є проект із файлами javascript, які потребують мініфікації та, як правило, окремо створюють інтерфейсну збірку (у випадку, якщо ви використовуєте, скажімо, JAVA для вашого серверного сервера). ( бурчання-внесок-погіршення )
  2. Коли ви зберігаєте код на своїй машині під час розробки, ви хочете, щоб браузер автоматично перезавантажував вашу сторінку (може здатися дрібницею, але повірте, це заощадило мені багато часу). ( Пряме перезавантаження )
  3. Коли розробник зберігає код на своїй машині, він хоче, щоб був показаний вичерпний список помилок JS / загальних порушень найкращої практики. ( grunt-contrib-jshint )
  4. У вас є проект із файлами SASS / LESS, які потрібно компілювати у файли CSS на машині розробників під час розробки. Наприклад, коли він зберігає файл SASS, ви хочете, щоб він автоматично скомпілювався у файл CSS для включення на вашу сторінку . ( grunt-contrib-sass )
  5. У вас є команда розробників інтерфейсів, які працюють над інтерфейсом користувача, і команда розробників серверних систем, які працюють над серверною базою, і ви хочете, щоб розробники інтерфейсу використовували інтерфейси REST інтерфейсу сервера без необхідності кожного разу компілювати та розгортати код самостійно машини. Якщо ви задавались питанням, це неможливо з типовим налаштуванням веб-сервера, оскільки браузер XHR не може бути міждоменним. Grunt може встановити проксі-сервер для того, щоб ви перенаправляли запити XHR на власну систему на сервері підключення grunt до іншої системи! ( grunt-contrib-proxy, grunt-contrib-connect )

Я не думаю, що ваш сценарій оболонки може зробити ВСЕ з цього. Підводячи підсумок, так, налаштування Gruntfile.js є нудним для тих, хто мало впливав на javascript / є новим для nodeJS, я пройшов ті самі болі, що й учень, але Grunt - це дивовижне програмне забезпечення. ВЛАДІТЬ час, щоб налаштувати належний Gruntfile.js для вашого інтерфейсного проекту, і ви будете дякувати Богу, що полегшив вам життя :)

Сценарій Перевага проти оболонки:

  1. Якщо ви пишете сценарій оболонки для кожного з цих завдань, його нудно підтримувати, а потім налаштовувати під кожну з ваших потреб. Gruntfile.js насправді досить просто. є конфігурація, з якою ви її ініціюєте, вказуючи, які завдання ви хочете виконати, джерела та цілі для кожного.

  2. Інтеграція з проектними генераторами насіння на Yeoman, Gulp - ще один важливий фактор, який слід врахувати. Yeoman і Gulp поставляються з Gruntfile.js 'з інтелектуальними значеннями за замовчуванням. Для когось, хто є єдиним учасником інтерфейсу в своїй команді, це для мене безцінно!

  3. Для когось, хто працює над фронтенд-технологіями, якщо з вами працює більше однієї людини, їм досить легко познайомитись із Grunt, що вже добре задокументовано з великою кількістю відповідей на SO, ніж познайомитися з вашими сценарії оболонки. Це може бути фактором для великих команд.

  4. Численні плагіни для Grunt розширюють базову функціональність. Якщо ваш сценарій оболонки НЕ ДУЖЕ популярний і ДУЖЕ модульний, я не бачу, щоб для нього будувались плагіни. Це також поширюється на включення у ваш проект нових технологій інтерфейсу. Скажімо, якщо ви хочете використовувати машинопис у своєму проекті завтра, ваш сценарій оболонки повинен буде це включити та врахувати це своїми зусиллями. З Grunt це так само просто, як "встановлення npm" та додавання конфігурації.


13

Незважаючи на те, що я погоджуюся з більшістю переваг, зазначених у " Прийнятій відповіді" , я все одно маю врахувати недоліки, які виділяє Кіт Циркель у " Чому нам слід припинити використання Grunt & Gulp"

Таким чином, деякі переваги спростовуються накладними витратами Grunt, і принаймні ви повинні врахувати все це у своєму остаточному рішенні щодо використання Grunt чи ні.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.