СоХабр закрыт.

С 13.05.2019 изменения постов больше не отслеживаются, и новые посты не сохраняются.

H Немножко про Gulp в черновиках Из песочницы

Всем привет. Сегодня я немножко расскажу о Феде и его опыте работы с Gulp. Статья рассчитана для джунов, а ее цель — дать примерное понимание, что такое Gulp и как он полезен при разработке. Подробное руководство по Gulp, будет чуточку позднее.


Итак. Познакомьтесь, это Федор. Он уже изучил html, немного знает про css, где-то слышал про js и уже считает себя крутым front-end разработчиком.


image

Но внезапно, Федор столкнулся с проблемой, что его код стал расти. Переход на препроцессоры, подключение git, заливка файлов на хостинг, оптимизация картинок, минификация css файлов, стали отнимать кучу времени. "Когда успевать писать код?" — сетовал Федор, и не нашел лучшей идеи как обратиться к самому гениальному решению, когда-либо придуманному человечеством...


image

После беглого пролистывания инфы про непонятные grant'ы и еще более непонятные webpack'и, Федор нашел то, что искал, а именно — Gulp ибо он обещал Феде сделать практически все, кроме увеличения чл… интеллекта.


Что же именно обещал сделать Gulp для Феди?


  • Первой проблемой Феди, было постоянные и утомительные обновления браузера, после каждого изменения в коде, дабы проверить свой результат. Его клавиша F5 была настолько стерта, что он и видеть ее перестал, а Gulp предложил ему мало того, что самостоятельно обновлять браузер после сохранения кода, так еще и создать мини сервер для всего этого.
  • Еще одной проблемой было преобразовывать sass файлы в css. Конечно, Федя нашел крутую прогу Koala, которая это довольно быстро делала, но ее приходилось постоянно запускать и настраивать под нужные файлы, а Gulp только ухмыльнулся и пообещал делать тоже самое, да еще и склеивать все, автопрефиксы расставлять, и даже попутно минифицировать сss файлы одной командой.
  • Картинки — вечная боль Феди, ведь большая картинка убивает скорость и производительность, а редактировать каждую — времени не запасешься. Федя вроде бы даже нашел прогу, которая обещала делать это скопопом, но Gulp пообещал делать тоже самое, да еще и одновременно подписи к картинкам подставлять, одной командой.
  • Еще одной рутиной, было выводить свой продукт на продакшн и заливать все на хостинг. «NO!» Сказал Gulp и Федя забыл об этой рутине.
  • Gulp, не сказал Феди всего того, что он умеет, ибо на данном развитии Феди, как разработчика, ему многое и не нужно, но со временем, если Федя не перестанет расти, то он пойме, как сильно Gulp способен автоматизировать его процессы.

Gulp — это некий js миксер, в который ты кидаешь свои картинки, sass и html файлы, да все что угодно, нажимаешь на кнопку и получаешь на выходи первоклассный, собранный и оптимизированный сок.


image

Конечно, по хорошему, прежде чем использовать Gulp, Феди не помешали бы знания основ nodejs, понимания npm и реализации многопоточных сервисов, но Федя может восполнить эти пробелы и в будущем, ибо эти знания не критичны для понимания такого удобного инструмента как Gulp.


У Gulp уже довольно огромное сообщество, которое помогает создавать все новые и новые плагины, для решения совершенно разных задач и останавливаться оно не намеренно. Поэтому, в особенности джуну, который только-только начал прокладывать шаги в такой интересной, технологической области, как Web, особенно полезно будет освоить такой эффективный инструмент, как Gulp.


image

Всем спасибо.


Ссылки на полезные материалы про Gulp.


–13
~1000

комментарии (20)

0
+2 –2
altrus ,  
Как-то я работал с одним человеком на общем небольшом проекте (html, css, js)
Он хотел юзать gulp
А я хотел чистый код, который можно править руками в любом месте
И у нас не получилось работать!
Это правда, что gulp — это или у всех, или ни у кого?
0
staticlab ,  

Конечно. Более того, артефакты сборки не принято коммитить в репозиторий.

–5
+1 –6
altrus ,  
Но это же неудобно и не правильно
90% вещей, решаемых gulp-ом (по данной статье) я легко решу автоматизированными скриптами, и мой код останется чистым, его можно будет легко править.
Что такого дает Gulp, чтобы я отказался от гибкости работать с исходниками?
+2
staticlab ,  

Gulp и есть запускалка автоматизированных скриптов :)

–4
+1 –5
altrus ,  
Я это понял
Но что-то цена на эту запускалку высока — навсегда привязать проект к определенному софту.
К тому же я свои скрипты могу настроить как хочу (собирать js файлы в определенном порядке, в несколько файлов, минифицировать только нужные и др.), а у gulp наверняка ограничения
+3
JustDont ,  
Gulp императивен. Что в билд-скрипт напишете, то и будет, ни больше ни меньше.

Ваша претензия сейчас звучит как «в батники/питон (или на чем там у вас скрипты) я умею, а вот в nodejs и доку gulp — не умею».
–1
+1 –2
altrus ,   * (был изменён)
Моя претензия что я могу с работать на java на IntelliJ, а мой коллега на Eclipse
On проект будет собирать Gradle-om, а я Maven-om
А третий вообще в vim будет писать
И java код у нас будет один.

А с Gulp-ом его нет, этого общего кода, инвариантного к средствам разработки.
+1
+2 –1
kinjalik ,  

Так кодовая база у всех одна. Отличается только метод сборки — Webpack/Gulp/Grunt.

0
altrus ,  
Я просто хочу сказать, что Gulp это не плагин к IDE для удобства работы, а библиотека к проекту, без которой он в общем случае работать уже не будет, пока ты руками не реализуешь все используемые в нем функции.
+1
+2 –1
JustDont ,  
Пардон, но если у вас есть автоматизированные скрипты, то это ровно то же самое — появляется некая процедура билда, появляются артефакты сборки, которые уже по определению не исходники.

А в код gulp естественно можно никак не пихать, если вам не лень F5 нажимать (мне за 10+ лет работы не лень, да и вообще это какой-то высосанный из пальца пункт). Всё остальное же работает только на этапе билда.

PS: Впрочем gulp всё равно зачахнет, как зачах в своё время ant. Императивный сборщик плохо масштабируется, и чем больше проект, тем больше у людей желания взять вебпак (это несмотря на всю убийственную вычурность вебпака, требующую отдельных разборок и гуглежа по каждому нестандартному поводу).
+3
lostpassword ,  
Я не веб-разработчик, но предположу, что он даёт некую стандартизацию, когда параметры сжатия задаются там-то, параметры именования — там-то, папки выгрузки — там-то, и все члены команды могут быстро это понять благодаря стандартным конфигам.
А разбираться в автоматизированных скриптах — это обычно боль для всех, кроме автора скриптов (хотя тоже не всегда, порой ему тоже бывает больно).
+3
dagen ,  
Судя по закладкам автора, эта статья — автобиография.
0
crazy_mama ,  
А судя по иллюстрациям, ещё и рисовал он сам.
0
mishashapka ,   * (был изменён)
Ну так то да. Я параллельно учусь и пытаюсь описывать свое понимание этой технологии, а критика очень помогает корректировать свои знания.
–1
+3 –4
Sabubu ,   * (был изменён)
Часто разработчики слишком любят gulp и делают так, что проектом пользоваться без него нельзя.

Gulp здорового человека: используется только для оптимизации файлов для продакшена, для адаптации JS кода под браузеры без ES5. В dev все работает без него.

Гулп курильщика: используется даже на dev, изменил одну букву — запускай скрипт и жди пока нода распарсит 100500 файлов, либо держи постоянно запущенным и смотри как он ест 20-30% CPU. Вот так ускорение разработки со знаком минус…

Кстати, еще одна вещь, которую любят фрондендеры-курильщики — это делать верстку, работающую нормально только в их модели мака. Браузеру 2 года? Извини, он недостаточно хорош (а ничего, что это встроенный браузер смартфона без обновлений, инвалиды?).

Курильщик сначала верстает под мак, а потом пытается лепить костыли для других браузеров. А надо: заранее знать отличия, и заранее проектировать верстку, думая о поддержке разных браузеров. ну как можно быть такими инвалидами? Вы наверно с курсов **brains только вчера выпустились? Даже я, PHP-разработчик, их знаю, а вы, инвалиды, нет.

Да, верстку надо проектировать и представлять в голове, а не переставлять на глаз правила в DevTools.

Я лично считаю инвалидом любого фрондендщика, который на память не помнит примерные отличия браузеров в поддержке CSS/JS. Это же твоя область работы, инвалид. Ты этим на хлеб зарабатываешь, инвалид. Сравни себя, инвалида, и любого механика, который наизусть помнит особенности машин, или ремонтщика, который наизусть помнит, в каком ноутбуке стоит какая матрица и какое где напряжение. Почему ты, инвалид, различия между 3 версиями JS не можешь запомнить, или несколькими уровнями CSS? Ты бы валялся на помойке, если бы с таким отношением к работе пытался устроиться в автомастерскую, но нет, ты, инвалид, пишешь в резюме 150 000, Material Design и «react.js», хотя даже MVC толком не понимаешь.
+1
andreymal ,   * (был изменён)
В dev все работает без него.

Очень опасно так делать, потому что какие-нибудь оптимизации или полифиллы могут что-нибудь сломать (например, в cssnano это фича и заявляется прямым текстом в документации), и при рабочем dev на проде окажется что-то поломанное


пока нода распарсит 100500 файлов

Не знаю, что у gulp, но webpack вполне умеет отслеживать только изменённые файлы и перекомпилировать их за доли секунды


Это даже если не вспоминать про scss, coffeescript, typescript, jsx и прочие радости разработчиков, нативной поддержки которых в браузере нет и никогда не будет

0
JustDont ,  
Не знаю, что у gulp, но webpack вполне умеет отслеживать только изменённые файлы и перекомпилировать их за доли секунды

На самом деле инкрементальный билд умеют делать практически все, да еще и с незапамятных времен. Даже тот же древний ант при желании можно этому научить (разве что не из коробки). А нынче это вообще норма жизни. Сложнее будет найти такой инструмент, который это принципиально не может.
+2
JustDont ,   * (был изменён)
Я лично считаю инвалидом любого фрондендщика, который на память не помнит примерные отличия браузеров в поддержке CSS/JS.

Заходит в бар инвалид-бекэндщик, у которого код хорошо если под парочку распространённых осей соберется, и который по-любому не расскажет посреди ночи как, например, надо билдить под AIX 5, и в чём будут отличия. И молвит человечьим голосом: «Я лично считаю инвалидом любого фрондендщика, который <...>»
^_^

Ну а если говорить серьезно, то до тех пор, пока вы лично не платите и не представляете из себя хоть сколько-нибудь заметный (отличный от статпогрешности) срез аудитории — вот это вот:
Браузеру 2 года? Извини, он недостаточно хорош (а ничего, что это встроенный браузер смартфона без обновлений, инвалиды?).

абсолютно нормально. Мне никто не будет платить зарплату за то, что я сижу и обеспечиваю обратную совместимость с некой окаменелостью с какой-нибудь там 0.01% мировой используемости. А иногда, в зависимости от специфики проекта, не будут платить и за что-то даже в 100-1000 раз более популярное. Лично у вас не работает? Ничего личного, вы, как говорил один относительно известный политический деятель, просто не вписались в рынок.
0
andreymal ,  
Заменить «gulp» на «webpack» (а единственное здесь упоминание «webpack» на «gulp») — и не изменится вообще ничего)
0
mishashapka ,  
Согласен, но я хотел показать, что стартовать с Gulp, лично для меня было проще. Возможно, по мере необходимости, в будущем можно будет перейти на Webpack.