Тёмный

Свежий взгляд на Gulp: функции и ES-модули 

Подписаться
Просмотров 18 тыс.
% 1 178

00:00 Интро
01:15 Устройство сборки
04:06 Обновление до ES
10:20 Обновление до ESM
16:04 Выводы
Нравится? Становитесь патронами - www.patreon.com/pepelsbey
Примеры сборки - github.com/pepelsbey/playground/tree/master/25
Документация Gulp - gulpjs.com/docs/en/getting-started/creating-tasks
Minimal BrowserSync setup with Gulp 4 - github.com/gulpjs/gulp/blob/master/docs/recipes/minimal-browsersync-setup-with-gulp4.md
Converting a basic v3 gulpfile.js to a v4 gulpfile - benfrain.com/converting-a-basic-v3-gulpfile-js-to-a-v4-gulpfile/
* * *
Камера: Blackmagic Pocket Cinema 4K
Объектив: Panasonic 12-35 мм, f/2,8
Микрофон: Audio-Technica AT4053b
Свет: Aputure Light Storm 120d II + Light Dome
Софт: DaVinci Resolve, iZotope RX

Опубликовано:

 

10 июн 2020

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 149   
@pepelsbey
@pepelsbey 4 года назад
01:15 Устройство сборки 04:06 Обновление до ES 10:20 Обновление до ESM 16:04 Выводы
@kost9kost
@kost9kost 3 года назад
Почему не используешь scss, sass вложенность? намного удобней писать же
@gorodiskiy4
@gorodiskiy4 3 года назад
Это было затишье перед бурей? Я слишком долго ждал, и тут годнота за годнотой
@k-ivan
@k-ivan 3 года назад
Вадим, как всегда полезно! Спасибо!
@vic_shine
@vic_shine 3 года назад
Эх, как же круто, что ты снова вернулся на ютюб ☺️ каждый ролик - лучший!
@user-cd6gu6ig1j
@user-cd6gu6ig1j 3 года назад
Как раз недавно задумывался над обновлением gulp. Спасибо за очередное доступное и полезное видео)
@Anodoree
@Anodoree 2 года назад
Шикарное видео! Очень полезное! Чётко, ёмко и понятно. Огромное спасибо!
@get-web
@get-web 3 года назад
Актуально, понятно и просто. Наконец-то дошли руки обновить свою сборку и это видео было очень кстати!
@blackbirdalternativedevelo1068
@blackbirdalternativedevelo1068 3 года назад
Как всегда, чётко и по делу. Вадим, благодарю тебя за то что ты делаешь.
@user-op5ru7fq6r
@user-op5ru7fq6r 3 года назад
Спасибо! Мега полезная информация!
@alex_tur
@alex_tur 4 года назад
Спасибо! Про gulp.task не знал. Надо переписать!:) Я еще по файлам разбил таски, потому что стало очень сложно ориентироваться в коде gulpfile`а, а когда все такси по файликам в отдельной папочке - красиво и удобно (для меня)!
@Kirill-kh3kt
@Kirill-kh3kt 3 года назад
Вадим всегда классно объясняет. Спасибо, мы в команде используем gulp )
@lenaryan
@lenaryan 4 года назад
Склейка на 8:16 - это как я на матане, когда отвлеклась на секунду, а на доске уже километровая функция)) Спасибо, мега-актуально для меня сейчас, пойду свой галпфайл переписывать))
@pepelsbey
@pepelsbey 4 года назад
Ой, думал только я на на Галпе сижу :)
@IIIu6ko
@IIIu6ko 4 года назад
@@pepelsbey Нет, не только :)
@zapiski_verstalshika
@zapiski_verstalshika 3 года назад
спасибо) будет чем заняться на досуге))
@romanstein13
@romanstein13 2 года назад
Спасибо большое за ультра-полезности!
@mikhailurban1222
@mikhailurban1222 3 года назад
Вадим спасибо! очень полезно!
@michaelpotyomkin2568
@michaelpotyomkin2568 4 года назад
прикольная футболка :)
@dmitrytrofim
@dmitrytrofim 2 года назад
Огромное, блин, спасибо за видос. А то я с этими модулями чуть не рехнулся)
@MaksimZhatkin
@MaksimZhatkin 3 года назад
Спасибо большое за видео! Очень нравится ваш формат, особенно то, как много мелочей вы пытаетесь учесть. Возникает вопрос: как работать с первоисточником? Мне как разработчику, который только более-менее встал на ноги было бы так же интересно узнать о том, как вы следите за развитием веба. Иными словами, какими инфо-каналами пользуетесь, как фильтруете информацию, и в какой момент понимаете, когда пора лезть в доку и изучать новые фишки. Сейчас очень много информации самого разного качества и сложно в ней не заплутать, а требования как к разработчику постоянно растут и уже не подходит поверхностный серфинг темы(благо, на этот канал это не распростроняется) и все чаще нужно знать, как та или иная технология работает "под капотом".
@pepelsbey
@pepelsbey 3 года назад
Читаю Твиттер, тут нечего добавить. В основном, в англоязычном аккаунте полезное twitter.com/pepelsbey_/following
@slonofanya
@slonofanya 3 года назад
Я, когда прокрастинирую, занимаюсь вот таким причесыванием кода. А сегодня еще и смотрел как другие это делают, прогресс :)
@overstrides
@overstrides 3 года назад
Спасибо, отличное видео
@webdev2030
@webdev2030 4 года назад
Галп для сборки и само то. Вебпак лучше всего для JS (ESM, React, Vue и т.д.). Если мы делаем обычный лендос, то html, css, картинки собирать галпом удобно, а js уже можно и на вебпаке собрать. И кстати вебпак тоже к галпу прикрутить можно, галп будет запускать вебпак для сборки.
@xaaser2006
@xaaser2006 3 года назад
Это называется webpack-stream
@DimaNaks
@DimaNaks 3 года назад
Очень полезное видео, решил настроить себе галп для пэт-прожектов и зарылся на пару вечеров, на официальном сайте доки по современному синтаксису практически нет, какие то крупицы лежат на гите галпа.
@someelse989
@someelse989 3 года назад
Как всегда круто
@user-xg5fp3xe8u
@user-xg5fp3xe8u 3 года назад
Лайкос за футболку, она прекрасна как и всегда)
@aurelianobuendia4203
@aurelianobuendia4203 3 года назад
Спасибо 😊
@vkuznetsov44
@vkuznetsov44 3 года назад
gulp агонь! Бро!))
@sergeyshevtsov5125
@sergeyshevtsov5125 2 года назад
Супер! У меня был всего день на изучение gulp. А тут ещё сразу в современном синтаксисе. Макеев - One Love!
@doremirex
@doremirex 4 года назад
Спасибо Вадим. Менял таски на функции почти сразу как 4й галп появился. Было бы интересно посмотреть сборки, которые вы используете для верстки.
@pepelsbey
@pepelsbey 4 года назад
В описании ссылка на код, который в видео - что-то такое и использую последнее время.
@RisDeep
@RisDeep 4 года назад
Спасибо
@VladyslavZubko69
@VladyslavZubko69 3 года назад
Блин Вадим, ты супер, спасибо за видео Побежал обновлять свой галп-конфиг ехехеххе Пс. ты в видно, о том как настраивать сервер, сказал что покажешь как прикрутить гит-экшены на деплой. Пару дней назад, я использовал их в первый раз, что бы прикрутить линтеры всякие. Какой же каеф(Правда попрощался с Тревисом). Очень жду видос о том как сделать крутой деплой ❤️
@pepelsbey
@pepelsbey 3 года назад
Обязательно про экшены расскажу, сам от них прусь страшно. А пока можно посмотреть на то, что я на них написал для «Веб-стандартов» github.com/web-standards-ru/web-standards.ru/tree/master/.github/workflows
@VladyslavZubko69
@VladyslavZubko69 3 года назад
@@pepelsbey та я итак уже все "потырил", кроме деплоя. Обожаю вообще ходить по репозиториям крутых людей, и что-то одалживать ;) У кого-то экшен крутой, у кого-то правило для линтера, и все вот это)
@kassailakasela4545
@kassailakasela4545 3 года назад
Спасибо, хорошее видео. Пользуюсь Gulp как основным инструментом для сборки проектов (не SPA), и по большей части как task runner. Т.к. тасков много, храню их в отдельных файлах как модули. Недавно переписал таск сборки JS на webpack (до этого был на Rollup, т.к. были проблемы с импортом модулей, manualChunk и с обновой node-resolve), при этом не меняя ничего отстального. В этом и прелесть Gulp. Есть ли смысл переписавать таски на export (не считая просто рекомендацию разрабов)? P.S. Бандлеры и компиляторы меняются, а Gulp остается=)
@FFxSquall
@FFxSquall 3 года назад
Dynamic Imports подерживаются в 13 ноде, так что не обязательно выносить наверх плагины postcss, но придется использовать await так как import() вернет промис и я не уверен, что postcss это поддерживает. await import() должен работать.
@user-uo5uo1sn6z
@user-uo5uo1sn6z 3 года назад
Спасибо огромное за урок. Я тут 3 дня бился над ошибками современных gulp файлов (скачивал с github). А еще можно сделать урок как разбивать большой gulpfile на модули, функция которые лежат отдельными файлами и подключать по необходимости. Каждый task в своем файле. У меня к примеру gulpfile уже на 350 строк, становится сложно ориентироваться и изменять, дополнять функционал. Уроков понятный нет на youtube. Думаю будет многим полезно. А у Вас получается отличное объяснение.
@pepelsbey
@pepelsbey 3 года назад
Спасибо за идею, будет повод - запишу :)
@SamaraDjVitek
@SamaraDjVitek 3 года назад
Вадим, спасибо за классное видео! Скажите, у Вас в сборке нет ни одного плагина для оптимизации изображений. Это потому что Вы графику руками любите оптимизировать, или просто плагинов нет хороших?
@pepelsbey
@pepelsbey 3 года назад
Я чуть ниже уже ответил, но скопирую :) Не люблю сжимать картинки при сборке, мне жалко гонять без толку процессор при CI/CD и подогревать и без того горячую планету. Я их готовлю либо отдельно, либо отдельной задачей при деплое - если нужно нарезать варианты для из оригинала.
@Battlehater
@Battlehater 3 года назад
Обновление Gulp с 3-й на 4-ю версию очень много радости принесло когда имел неосторожность обновить старый проект(когда еще не использовали методы series и parallel). Сейчас стараюсь все держать в актуальном состоянии. К стати, я деструктуринг для методов галпа использую: const { src, dest, parallel, series } = gulp
@pepelsbey
@pepelsbey 3 года назад
Мне голые src и dest кажутся какой-то слишком уж магией, лучше писать явно gulp.src и gulp.dest. Плюс { src, dest } пока не работает в ESM-синтаксисе с Gulp.
@Battlehater
@Battlehater 3 года назад
​@@pepelsbey А вот мне понятно, что значит src и dest(и другие, ведь видно что я импортирую) =). Но ответ решил написать потому что на Node.js 14 возможна полноценная работа с модулями(в т.ч. и { src, dest }). Возможно, и более ранние версии работают с таким подходом. Я выбрал эту версию просто потому что она последняя на данный момент, снова откатывать и проверять на старых немножко лениво. По правде говоря, gulp и node.js содержат всю необходимую документацию. Могу на гитхаб загрузить, но уровень владения английским такой, что мне будет очень неловко комментировать что и как нужно сделать :) Но если коротко - убираем type="module" из package.json, меняем имя gulpfile.js на gulpfile.esm.js, ставим esm модуль(npm i esm -D). Done!
@Battlehater
@Battlehater 3 года назад
Можно и без -D / -save-dev, просто я разделяю модули на те, которые используются для сборки и те, которые становятся частью подключаемых библиотек.
@Battlehater
@Battlehater 3 года назад
убрать type="module" - не очевидная штука, потому что node.js требует ее для esm, но, вероятно, gulp + esm(модуль) используют свой подход и он не работает с нативными модулями.
@TechExplorer27
@TechExplorer27 3 года назад
Thanks for your tutorial 👌 I use gulp-imagemin (minify) and gulp.spritesmith (sprites) instead of just copy images. Maybe it can be useful for someone.
@pepelsbey
@pepelsbey 3 года назад
Я не люблю сжимать картинки при сборке, мне жалко гонять без толку процессор при CI/CD и подогревать и без того горячую планету. Я их готовлю либо отдельно, либо отдельной задачей при деплое - если нужно нарезать варианты для из оригинала.
@martineden511
@martineden511 3 года назад
Вадим на голову выше всех обучающих каналов вместе взятых. Мне кажется нужна новая рубрика - Вадик проверяет на ошибки блогеров учителей Верстки. Там много чего можно найти. Он просто с солидарности молчит
@pepelsbey
@pepelsbey 3 года назад
Я их просто не смотрю :) И конечно соболезную вам, если там всё действительно так плохо.
@user-qf2ew6zr9k
@user-qf2ew6zr9k 4 года назад
👍👍👍
@Seacrest.
@Seacrest. 2 года назад
vite лучший сборщик
@pepelsbey
@pepelsbey 2 года назад
К счастью, не бывает лучших сборщиков. Но бывают лучшие сборщики для вашей задачи. Vite хороший, но не лучший :)
@Kumigy
@Kumigy 3 года назад
Интересное видео. А по манипуляциям с вс-кодом видео не планируется? Я про хоткеи интересные и плагины, ну и вообще почему именно он, а не шторм? Интересно было бы посмотреть сборку лайфхаков именно по рабочему процессу.
@pepelsbey
@pepelsbey 3 года назад
Про VS Code хочется подобнее рассказать, да. Спасибо за идею :)
@Kumigy
@Kumigy 3 года назад
@@pepelsbey будем с нетерпением ждать!) а то у нас тут команда поделилась на любителей шторма и на вскодеров. У каждой ИДЕ свои преимущества и свои недостатки, было бы интересно послушать ваше мнение, ну и лайфхаки по работе с той или иной ИДЕ.
@Disorrder
@Disorrder 3 года назад
Для меня всё-таки удобнее, привычнее и красивее function declaration, так код выглядит более... декларативно. Т.е. export function html() { . . . } И сразу явно видно, что это не константа экспортируется, не какой-то какой-то кусок данных, а функция. Кстати, в style guide от гугла рекомендуется именно такой синтаксис. От airbnb наверняка тоже, надо посмотреть. С галпом работал с самых первых версий, как только он появился. Даже синтаксический сахар для него писал, когда ещё не было этих gulp.series. До этого был самопальный сборщик на ноде, который работал гораздо примитивнее, так что я очень обрадовался, что наконец-то кто-то сделал нормальную сборку. Как же я ошибался... У галпа было много проблем, приходилось допиливать его под свои нужды. И вот webpack реально спас мне много времени. А особенно потом webpack-dev-server с его hot reload. Работает значительно быстрее, гораздо удобнее в конфиге. Хотя в первые дни тоже было отрицание этого странного синтаксиса, какие-то лоадеры, чёёё. Но потом как понял и как вошёл во вкус. Ну, и назначение у гульпа и вебпака разные. Первое - это task runner, а второе - module bundler. Т.е. гораздо удобнее (особенно для SPA) сборку переложить на вебпак, а в гульпе оставить все остальные задачи. Хотя за последние 4 года я ни разу не использовал gulp, абсолютно всё покрывает вебпак. Даже сборку Electron, если надо. Но я и не делаю многостраничные сайты. По сути, gulp просто выполняет подряд функции длуг за другом. Это было удобно, когда ещё не было async/await синтаксиса в ноде. А сейчас можно обойтись и без таск раннера, просто скрипт написать, к чему лишние навороты? Особенно, если ты и так экспортишь функции. Gulp полезен только своими хелперами типа gulp.src (то же, что и glob), gulp.watch (который использует chokidar под капотом), gulp.dist (довольно просто заменить fs.copyFileSync). В общем, хз. Ни разу не приходилось строить длинные цепочки из тасков.
@pepelsbey
@pepelsbey 3 года назад
Про синтаксис я с вами, в принципе, согласен. Но в случае галп-файла, особенно простого, он уже выглядит достаточно декларативно и тебе становится важнее его лаконичность, чем принципиальное понимание где там функция, а где что. Или другими словами: чем чище и компактнее, тем проще читать. А если у вас развесистый код где-то ещё, то там можно писать иначе.
@igorshadrin4636
@igorshadrin4636 4 года назад
На 13:19 можно делать динамический импорт в ES модулях, для этого используется функция import('/path/to/module'), которая возвращает промис. Современные браузеры даже поддерживают эту фичу. Подробнее можно почитать на mdn.
@pepelsbey
@pepelsbey 3 года назад
А в Node.js сработает?
@egsadgagashgsdyubes1495
@egsadgagashgsdyubes1495 3 года назад
@@pepelsbey сработает, но дело в том, что динамический импорт - это асинхронная операция. Таски придётся сделать асихронными функциями.
@igorshadrin4636
@igorshadrin4636 3 года назад
​@@pepelsbey судя по документации должен, но только если сторонний модуль ESM. Свежей ноды под рукой сейчас нету, попозже только смогу проверить. nodejs.org/api/esm.html#esm_import_expressions
@igorshadrin4636
@igorshadrin4636 3 года назад
@@pepelsbey ​ проверил, прекрасно работает в любом контексте с любыми модулями. Вот код: github.com/Vilvarin/dynamic-import-test Таски действительно должны быть асинхронными, как заметил liaFcipe, но это не большая проблема, gulp прекрасно с ними работает. Так что для следующего видео можно разобрать и такой кейс =)
@modusvivaldi7701
@modusvivaldi7701 3 года назад
@@egsadgagashgsdyubes1495 Если не ошибаюсь, таски Gulp'а всегда асинхронные. Хэндлер таска должен возвращать Promise/Stream/Process, или же запускать callback, который передаётся аргументом: (done) => { /* do something */; done(); }. В этих случаях при запуске такса Gulp успешно оборачивает хэндлер в нодовский stream и всё работает как положено. Иначе таски тупо не знают, когда заканчиваться.
@astrotrain
@astrotrain 3 года назад
Мне понравился новый синтаксис, когда он появился переписал на него свою сборку, в которой вебпак был только для js. github.com/astrotrain55/gulp4webpack/tree/master/src/gulpfile.js Правда недавно всё равно переехал полностью на вебпак, но за галпом планирую следить.
@pavelarseyev452
@pavelarseyev452 3 года назад
Спасибо за видео. Скажите, где я ошибся? Я повторял все по вашему видео, но когда я говорю "Хоп", у меня почему-то не копируются все остальные таски :(
@pepelsbey
@pepelsbey 3 года назад
Хоп-трюк требует очень сильной концентрации. Это придёт с годами. А пока придётся руками (
@cubucul
@cubucul 3 года назад
Спасибо за видео! А как сделать такое лаконичное приветствие в терминале? Не поделишься конфигом?
@pepelsbey
@pepelsbey 3 года назад
У меня вариация на дот-файлы Матиаса Байненса github.com/mathiasbynens/dotfiles
@cubucul
@cubucul 3 года назад
@@pepelsbey Спасибо!
@ZifStone
@ZifStone 3 года назад
Нативные модули под нодой это хорошо, но есть еще детские болезни у популярных библиотек. Поэтому пользуйтесь с осторожностью. Например, ожидаемый синтаксис импорта не работает github.com/ramda/ramda/issues/3019
@antonmikaskin1892
@antonmikaskin1892 3 года назад
Спасибо за видео, Вадим! Подскажи, пожалуйста, есть ли хороший способ в Gulp собирать JS файлы? Допустим // main.js export frist from 'path_to_frist.js' // some code // // first.js export second from 'path_to_second.js' // some code // // second.js // some code // Чтобы он собрал это в нужном порядке в один файл? Заранее спасибо!
@pepelsbey
@pepelsbey 3 года назад
github.com/fword-dev/f-word.dev/blob/master/gulpfile.js#L28
@antonmikaskin1892
@antonmikaskin1892 3 года назад
@@pepelsbey Спасибо! Заодно узнал, что можно ссылаться на строки GitHub)
@IvanIsayev
@IvanIsayev 3 года назад
Вадим, а расскажи что за клевая тема у тебя в vscode? И иконочки 🙏🏻
@pepelsbey
@pepelsbey 3 года назад
GitHub Theme marketplace.visualstudio.com/items?itemName=GitHub.github-vscode-theme
@IvanIsayev
@IvanIsayev 3 года назад
@@pepelsbey спасибо!
@DimaNaks
@DimaNaks 3 года назад
И еще хотелось бы уточнить, я настраивал по доке галпа и там для того чтобы все современные фичи работали используется @babel/core, @babel/register и @babel/preset-env. С точки зрения более элегантного решения без установки доп. пакетов твоё решение безусловно выглядит лаконичнее и если я правильно уловил идею то с релизом 14 ноды можно в принципе отказываться от того варианта который использовал я?
@pepelsbey
@pepelsbey 3 года назад
Если я правильно помню, вам это уже не нужно было с 12-й версии - ES-модули там впервые начали появляться. Но в 14-й вот уж точно.
@alpro7203
@alpro7203 2 года назад
Привет Вадим! Подскажи пожалуйста, если знаешь: почему после установки некоторых пакетов, появляются уязвимости уровня high? И как с ними бороться? Обычный npm audit fix - - force не помогает Просто не понятно, от чего вообще это зависит? Создаю новый проект. Устанавливаю только Gulp. И сразу появляется 22 уязвимости.
@pepelsbey
@pepelsbey 2 года назад
Просто пакеты или их зависимости могут долго не обновляться и в дереве появляется какая-то зависимость, где нашли уязвимость. В 90% случаев это не проблема для обычной локальной сборки, так что можно это игнорировать. Почитайте у Дэна Абрамова об этом overreacted.io/npm-audit-broken-by-design/
@jorgenUA
@jorgenUA 4 года назад
я пробовал всё делать на VSC, но там все плагины вразнобой и не связаны, а webpack больше заточен для SPA, по моему. Так что для проекта, где вёрстка является главной, gulp остаётся удобным инструментом. Спасибо, конечно полезно. Что нравится, уже говорил, но всё же - всегда объясняешь по ходу нюансы( "npx потому что..." ) - признак знатока. Кстати, насчёт const мне понравилось это видео, довольно познавательно...ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-VyJV77ZFLRI.html
@Disorrder
@Disorrder 3 года назад
Ужасное видео, крайне не рекомендую прислушиваться к этому мнению. Лучше посмотри на codestyle таких компаний, как google, airbnb, они есть в открытом доступе, на них равняются многие компании, в т.ч. и российские. И это всё не без причин сделано. Доводы типа "мне лень набирать const, потому что у него 5 букв и они разбросаны по всей клавиатуре" - ну это бред полнейший. Программист бОльшую часть времени именно читает код, смотрит в монитор и думает над задачей, а не пишет. Поэтому потратить лишнюю секунду на 2 лишние буквы - ну это такая мелочь, букв что ли не хватает? Экономия на спичках, что называется. А потом другие участники команды читают это и ищут, а где же эта переменная изменяется дальше по коду? Нигде? А что хотел сказать автор, написав let?
@gerasim_vol
@gerasim_vol 3 года назад
А можешь скинуть конфиг для баш терминала? Что бы показывало директорию текущую?
@pepelsbey
@pepelsbey 3 года назад
У меня вариация на дот-файлы Матиаса Байненса github.com/mathiasbynens/dotfiles
@TheSkiveee
@TheSkiveee 3 года назад
На официальном сайте gulp говориться, что они отказалась от старого api gulp.src и т.д. Также рекомендуют вместо import gulp from "gulp" подключать только то что нужно import { src, dest, parallel, series } from "gulp"
@pepelsbey
@pepelsbey 3 года назад
У меня импорт частей { src, dest } заработал только в CJS-нотации, а в ESM не завелось, поэтому рассказывать не стал - пока не разберусь. Что касается gulp.src, то сборку хотелось скорее обновить, чем переписать принципиально без gulp-пакетов, на что намекает документация. Но это как-нибудь в следующий раз. Сегодня отказались от gulp.task и это уже маленькая победа :)
@dmitrykuzmin6524
@dmitrykuzmin6524 3 года назад
Вадим здравствуйте, пореккомендуйте ресурс где можно научиться пользоваться многострочным курсором, выделением слов как на видео и прочему, заранее благодарю!
@pepelsbey
@pepelsbey 3 года назад
Думаю, можно поискать в документации к вашему редактору. Например, VS Code code.visualstudio.com/docs/editor/codebasics
@dmitrykuzmin6524
@dmitrykuzmin6524 3 года назад
@@pepelsbey Благодарю за подсказку, посмотрю в документации.
@Avatarang1994
@Avatarang1994 3 года назад
При просмотре данного видео возникло пару вопросов, надеюсь вы на них ответите, потому как сам я разобраться не смог) После команды npm i, появляются предупреждения о уязвимости, одна уязвимость высокая и две низкие. Сталкиваюсь с такой же ситуацией, при установки своей сборки. Если прописать команду npm audit fix, то уязвимости не исправляются. Как быть в этой ситуации? как править уязвимости в ручную? позволительно ли игнорировать данные предупреждения? Заранее спасибо вам, у вас отличные видео, очень интересно объясняете.
@pepelsbey
@pepelsbey 3 года назад
Предупреждения об уязвимости - это ежедневная реальность платформы Node.js. Не забывайте обновлять саму Node.js и пакеты и всё будет в порядке. Обычно этот аудит важен не для локальной сборки, а для ситуаций, когда вы запускаете код на серверах.
@Staxa2012Chanell
@Staxa2012Chanell 3 года назад
13:12 will dynamic imports work for postcss plugins imports inside CSS task?
@pepelsbey
@pepelsbey 3 года назад
Да, но нужно сделать async функции, полистайте комментарии под этим видео, есть несколько вариантов.
@Staxa2012Chanell
@Staxa2012Chanell 3 года назад
Vadim Makeev круто, спасибо! Не посмотрел их сначала) Спасибо за выпуск! Хороший пример рефакторинга.
@Mitorun
@Mitorun 2 года назад
А сейчас, в середине 2021, метод ESM актуальный? Стоит ли его применять, а то больше не встречал такого синтаксиса в галпфайлах.
@pepelsbey
@pepelsbey 2 года назад
В сообществе разработчиков большая инерция к использованию ES-модулей. Лично я стараюсь брать этот подход по умолчанию всегда, как максимально future-proof. И только если что-то принцпиально не работает - брать попроще.
@nightdog007
@nightdog007 3 года назад
Ребят, а посоветуйте человеку который галп видел только в виде "ага, здесь надо в консоль записать gulp scss или gulp js и соберется то что нужно", какой сейчас есть хороший и правильный вариант подтянуть в него компиляцию ES7?
@pepelsbey
@pepelsbey 3 года назад
Я вот так делаю, например github.com/fword-dev/f-word.dev/blob/master/gulpfile.js#L29
@KonstantinKochh
@KonstantinKochh 3 года назад
Вадим, ты же ускоряешь моменты, когда делается npm install и подобное? Почему оно так быстро происходит??) Неужели пора ноутбук менять :(
@pepelsbey
@pepelsbey 3 года назад
Ускоряю в видео, чтобы не тратить ваше время :)
@KonstantinKochh
@KonstantinKochh 3 года назад
Vadim Makeev фух. Успокоил
@fadilmamedov2844
@fadilmamedov2844 3 года назад
В свое время пользовался Browserify для сборки JavaScript модулей и подключал к Gulp. Сейчас это уже неактуально? Понимаю, что у Webpack гораздо больше фич, но есть ли что-то другое для небольших проектов? Может у кого-то есть опыт и может что-то порекомендовать?
@pepelsbey
@pepelsbey 3 года назад
Мне кажется, что Browserify уже отстал и для модулей я бы скорее сегодня использовал Rollup.
@maskazan
@maskazan 3 года назад
Ещё для минимализма можно избавится от return и фигурных скобок
@pepelsbey
@pepelsbey 3 года назад
Что для вас минимализм, то для меня нечитаемый код, так что извините :)
@Abdurahmon_Melikow
@Abdurahmon_Melikow 2 года назад
[22:52:33] 'styles' errored after 922 ms [22:52:33] Error: File not found with singular glob: /Users/melikovabdurahmon/Desktop/secondgulp/src/sty les/index.css (if this was purposeful, use `allowEmpty` option) at Glob. (/Users/melikovabdurahmon/Desktop/secondgulp/node_modules/glob-stream/readable.j s:84:17) Уважаеми Автор: Почему у мне таких ошибок на old version gulpfile.js
@pepelsbey
@pepelsbey 2 года назад
Если прочитать ошибку, то её суть в ненайденом или пустом файле. Но кроме этого может быть много причин, вам придётся разобраться самостоятельно.
@astrotrain
@astrotrain 3 года назад
Ещё можно сделать каталог, а не файл с названием gulpfile.js, и конфиг разделить на таски импортами или реквайрами по файлам, с главным файлом конфига index.js конечно же
@pepelsbey
@pepelsbey 3 года назад
Да, они пишут в документации, хочу попробовать большие файлы так разделить. Хотя выглядит немного хаком.
@astrotrain
@astrotrain 3 года назад
@@pepelsbey почему хаком? Когда конфиг большой удобно разделять, чтобы не писать портянку.
@pepelsbey
@pepelsbey 3 года назад
Я имею в виду сам механизм импорта index.js из папки, названной как файл. Странно это всё :)
@astrotrain
@astrotrain 3 года назад
@@pepelsbey ну в юниксе каталог это файл, импортам js тоже особо без разницы, указан файл или директория с файлом index.js, я думаю этим воспользовались и удобно сделали. Галп видимо и импортирует путь к конфигу просто по имени. А так бы был gulpfile.js и каталог для модулей, либо модули с галпфайлом бы валялись в корне проекта вместе с другими системными файлами. ((:
@no4e
@no4e 3 года назад
И ещё такой вопрос, почему именно terser, есть же бабелевский пресет minify? Или это не то? Я запутался. Может обзор пакетов для этого самого галпа устроить, с обоснованием какие пакеты зачем нужны и почему выбраны именно они? И про бабель, постцсс плагины, браузерлист, etc.
@pepelsbey
@pepelsbey 3 года назад
Иногда нет никаких обоснований, просто пришёлся под руку один пакет вместо другого. Но если будут какие-то серьёзные мысли на эту тему - расскажу.
@Vladyslav_Sliusar
@Vladyslav_Sliusar 3 года назад
Что за тема для VS code?
@pepelsbey
@pepelsbey 3 года назад
GitHub Theme marketplace.visualstudio.com/items?itemName=GitHub.github-vscode-theme
@Vladyslav_Sliusar
@Vladyslav_Sliusar 3 года назад
@@pepelsbey спасибо, уже нашёл под прошлыми видео. У вас ещё и font-weight в vs code 600 стоит?
@pepelsbey
@pepelsbey 3 года назад
У меня font-weight дефолтный, может просто macOS по-другому шрифты рендерит?
@Vladyslav_Sliusar
@Vladyslav_Sliusar 3 года назад
@@pepelsbey может быть
@XATADOM
@XATADOM 3 года назад
Почему gulp не установлен глобально?
@pepelsbey
@pepelsbey 3 года назад
Да потому, что у меня глобально уже есть npm и npx, поэтому все таски я группирую в npm-скрипты (npm run task), а если нужно постестировать отдельные, то npx gulp task.
@iamo0
@iamo0 3 года назад
Секунда JS-занудства, даже скорее JS ОКРа. В стрелках можно не писать return, если не используются фигурные скобки и функция состоит из одного выражения, которое что-то возвращает. const html = () => gulp.src(... и дальше по тексту
@pepelsbey
@pepelsbey 3 года назад
Я однострочники со стрелочными функциями и без скобок боюсь немного, а так бы с радостью.
@iamo0
@iamo0 3 года назад
Да, согласен, с непривычки выглядит как мешанина.
@alehmakaranka1089
@alehmakaranka1089 3 года назад
А еще вместо gulp можно попробовать в npm-scripts
@pepelsbey
@pepelsbey 3 года назад
Пробовал: сложно пишется, плохо читается, у многих пакетов нет нормальных CLI и в итоге проще написать на Gulp. Но для простых вещей пишу скрипты конечно.
@alehmakaranka1089
@alehmakaranka1089 3 года назад
@@pepelsbey ну там своих проблем хватает, это да. Как например - кросс-платформенные скрипты. Но когда сборщик не слишком сложный, как в вашем примере - postcss, минификация html да копипаста ассетов - можно в принципе обойтись и без абстракции в лице gulp. Но у gulp тоже есть свои недостатки. Как например - плагины-обертки над другими пакетами. В каком-то роде абстракции над нужными пакетами + зависимость от этих абстракции. Тот самый случай, когда пакет обновился с breaking changes, а плагин который его использует - нет, или хуже того, вообще не поддерживается автором вовсе. И приходится немного погрузится в принципы работы со Stream и строчить свой плагин для gulp. Хотя вместо gulp могут появится излишние cli (если в пакете этого по умолчания не было), и обмен может показаться в худшую сторону... Но, по мои наблюдениям, проект, в котором овер-много scss, быстрее компилируется из коробки, чем через gulp. Плюс там еще и watcher есть со своими плюшками Чем меня вебдев и забавляет, так это то, что одну и ту же задачу можно сделать разными способами. Это прикольно, я думаю
@semdevmaster
@semdevmaster 3 года назад
С переходом на импорты что-то получаем, а что-то теряем. Например так уже не получится import { src, dest, series } from 'gulp' Так как gulp не поддерживает именованный экспорт, и по всему файлу нужно постоянно дублировать слово gulp.что-то А при require деструктуризация отлично работает - const {src, dest, series} = require('gulp'); Получается, что поддержку всех фишек современного js можно получить только если и node.js свежий > 13 и все пакеты написаны по-современному, а у gulp и всей его экосистемы с этим большие проблемы. Но будем надеяться, что разработчики не запустят gulp и обновят его код.
@pepelsbey
@pepelsbey 3 года назад
Вы правы, это пока только скромные шаги в сторону полной модульной красоты, но кое-что уже работает. Мне пока даже нравится, что нужно писать gulp перед вызовом функций - иначе src, dest, series слишком похожи на магию ниоткуда.
@user-xg5fp3xe8u
@user-xg5fp3xe8u 3 года назад
import gulp from 'gulp' const {src, dest, series} = gulp
@leonarrus8613
@leonarrus8613 3 года назад
Заговор разработчиков, программистов - not ie 11 )))
@borisoffdenis
@borisoffdenis 3 года назад
Это все ужасно. Нет, ваши видео замечательные. А вот эти современные конфиги и зоопарк сборщиков/разборщиков - это ужасно. Раньше было лучше)
@fluxet1663
@fluxet1663 3 года назад
'html', 'styles' - вас не смущает такое именование для функций?
@pepelsbey
@pepelsbey 3 года назад
Пока нет, но вы расскажите, что смущает вас
@danielkhachaturian951
@danielkhachaturian951 3 года назад
Срочно убрать все точки с запятыми!))
@pepelsbey
@pepelsbey 3 года назад
Нет, спасибо, мне нормально.
@no4e
@no4e 3 года назад
а зачем экспортить все таски? достаточно ж только необходимые серии сделать публичными, а остальные пусть так и висят приватными, не?
@pepelsbey
@pepelsbey 3 года назад
Скорее привычка, чтобы можно было удобно добраться из npm-скриптов до нужных задач и скомбинировать нужную. Я не ставлю gulp глобально, использую npm-скрипты.
@vitalb7907
@vitalb7907 3 года назад
сборка не работая на гите. выдаешь ошибку
@pepelsbey
@pepelsbey 3 года назад
Пока не очень понятно, что это значит