Битва сценариев сборки Gulp Vs Grunt
Я уже писал о том, как начать работать с Gulp, а также о том, как начать работать с Grunt. Они оба автоматизировать наши задачи, они оба использовать узел, и они оба требуют от вас создавать задачи и устанавливать плагины какой-то Но вы задаетесь вопросом о разнице между двумя, или даже, что лучше?
В этой статье я сосредоточусь в основном на различия между этими двумя проектами что может помочь вам решить, какой из двух вы считаете лучшим для себя. Я буду использовать некоторый код, который может быть незнакомым. Если это так, я предлагаю прочитать две ранее опубликованные статьи, прежде чем начать.
Больше на Hongkiat.com
- Как начать работать с Gulp
- Как начать работать с Grunt
скорость
Основное различие между Gulp и Grunt заключается в как они справляются со своими задачами автоматизации изнутри. Gulp использует потоки Node, а Grunt использует временные файлы. Давайте переведем это на простой английский,?
Предположим, вы хотите написать код SASS для вашего проекта. Вы хотели бы скомпилировать свой код SASS, а затем, возможно, минимизировать его.
Грант справляется с этим, используя промежуточные файлы которые являются операциями ввода-вывода диска. Ваш файл SASS компилируется, а затем записывается во временный файл. Временный файл используется автоматическим префиксом, а затем конечный продукт записывается в файл назначения..
Гулп позаботится обо всем этом в памяти. Ваш исходный файл SASS компилируется, результат передается в авторефиксер без записи в файл, а затем файл назначения записывается.
По сравнению с операциями в памяти запись на диск выполняется медленно, что означает, что Gulp имеет большое преимущество в скорости (теперь). Tech.tmw сравнил скорость, которая показывает, что на Gulp большинство задач выполняются как минимум вдвое быстрее. Хотя это не было чрезвычайно научное исследование, тенденция есть, и я видел то же самое с моими собственными проектами. Но насколько велика разница в скорости?
Разница в секундах
Для большинства проектов это не имеет значения. Большинство проектов маленькие. Когда вы создаете тему WordPress или что-то подобное, количество файлов, с которыми вам нужно работать, находится в разумных пределах. Это действительно не имеет значения, если ваши таблицы стилей скомпилированы в 400 мс или 800 мс.
Кроме того, большинство проектов может быть структурированы таким образом, что некоторые из наиболее интенсивных вопросов могут быть обойдены. Если у вас есть 50 файлов SASS, вы можете так же быстро объединить их во время разработки, не нужно будет автоматически префиксировать или минимизировать их. Вам не нужно оптимизировать изображения при каждом сохранении проекта и т. Д..
Даже когда вам действительно нужны большие пушки, потому что вы переносите свою работу на промежуточный сервер или когда вы обновляете репозиторий, время сборки 5 секунд или 9 секунд имеет большое значение?
В довершение всего, Grunt добавит поддержку трубопроводов в предстоящем выпуске 0.5, что значительно ускорит процесс, что делает этот вопрос спорным.
Общество
Grunt существует намного дольше, чем Gulp, поэтому он имеет значительную базу пользователей. В настоящее время Грант получает в среднем около 37 000 загрузок в день, а Gulp получает чуть больше половины, около 23 000. Тем не менее, Gulp существует только в течение полутора лет, что делает это число респектабельным по меньшей мере.
В настоящее время у Grunt более 4000 плагинов, а у Gulp более 1200 плагинов. Согласно тенденциям Google, все больше людей ищут вещи, связанные с Grunt, есть больше форумов, которые занимаются этим, и, как правило, больше поддержки со стороны сообщества..
Конечно, Гулп встал и идет, что означает, что это вероятно, выровняется в долгосрочной перспективе. Тем не менее, это препятствие для некоторых разработчиков, особенно тех, кто работает над проектами на основе Grunt..
Я хотел бы отметить, что сообщества для обоих очень приятно. Насколько я могу судить, отношения между лидерами в каждом сообществе удивительны и должны служить примером для всех. Создатель Gulp фактически помог автору сравнения скоростных тестов улучшить точность синхронизации, что привело к уменьшению разницы во времени. Вот что я называю джентльменом!
Код против конфигурации
Очевидно, это переломный момент для многих, но, честно говоря, я не вижу проблемы здесь лично.
Аргумент звучит так: Gulp - хороший пример того, что Конфигурация кода поверх конфигурации может быть полезной, когда конфигурация становится немного запутанной. Другие люди говорят, что хотя это и правда, и Гулпу легче читать, это сложнее записывать так как трубопровод может быть немного запутанным.
Перед тем, как взвесить, вот тот же пример сначала в Grunt, затем в Gulp:
grunt.initConfig (sass: dist: files: [src: 'dev / *. scss', dest: '.tmp / styles', разверните: true, ext: '.css'], автоматический префикс : dist: files: [expand: true, cwd: '.tmp / styles', src: ', * / *. css', dest: 'css / styles'], смотреть: стили: файлы: ['dev / *. scss'], задачи: ['sass: dist', 'autoprefixer: dist']); grunt.registerTask ('default', ['styles', 'watch']);
gulp.task ('sass', function () gulp.src ('dev / *. scss') .pipe (sass ()) .pipe (autoprefixer ()) .pipe (gulp.dest ('css / styles') ));); gulp.task ('default', function () gulp.run ('sass'); gulp.watch ('dev / *. scss', function () gulp.run ('sass');); );
Мое мнение таково, что это действительно не имеет значения. Конечно, если вы привыкли к первому способу, вам, возможно, придется потратить некоторое время на выяснение второго, но это также верно и наоборот. Так что для меня “это сбивает с толку” аргумент полностью неверен. любой новый метод, который вы изучаете, поначалу сбивает с толку, но если вы потратите время, чтобы понять логику каждого из них, все выровняется.
Тем не менее, я лично предпочитаю API Gulp, потому что он чистыйэ-э, и это отражает то, как я думаю ближе, чем Грант. Это конечно полностью субъективно и это не проблема с Грантом вообще, это просто мое личное предпочтение.
Как выбрать
Я не думаю, что есть какой-либо вопрос о том, что и Грант, и Галп являются отличными инструментами и помогли людям сэкономить бесчисленные часы времени на протяжении многих лет. Grunt пока немного медленнее, но имеет гораздо большее сообщество. Gulp работает быстрее, имеет более чистый API, но ему не хватает базы пользователей.
Я думаю, что решение в конечном итоге сводится к преемственность, доступные плагины а также предпочтение.
(1) Если вы уже использовали Grunt / Gulp сейчас и ты доволен этим, нет причин переключаться.
(2) Если ваш проект требует плагинов которые не предоставлены Gulp и вы не готовы написать его самостоятельно, вам нужно будет пойти с Grunt.
(3) Если вышеупомянутые два соображения не относятся к вам, это будет зависеть от предпочтений. Я предлагаю попробовать оба и посмотреть который с тобой.
Как я уже сказал, я решил использовать Gulp, потому что мне больше нравится его более чистый API, но мне вполне удобно использовать Grunt, если проект требует этого. Что вы должны не До этого читайте, что мистер Всезнайка сказал, что Гулп лучше, и примите это. Хотя есть различия, нет явного победителя и оба проекта могут и будут сосуществовать. Попробуйте их и решите сами.
Примечание. Возможно, вы также захотите учесть мнения таких пользователей, как Кейт Циркель (консультант по Javascript), который советует вам использовать ни. В своей интересной статье «Почему мы должны прекратить использовать Grunt & Gulp» он предлагает использовать npm.
Дальнейшее чтение
Есть много других отличных статей на эту тему. Я искренне рекомендую любое из следующего для дальнейшего чтения; никогда не больно читать то, что говорят другие!
- Grunt vs Gulp - Beyond the Numbers (особая благодарность за наглядные примеры)
- Глоток, ворчание, что угодно
- Выберите: Grunt, Gulp или npm?
- Ускоренный тест Gulp and Grunt
- Почему мы должны прекратить использовать Grunt & Gulp
- Build Wars (используйте стрелки для навигации)
- Нет необходимости ворчать, глоток свежего воздуха