Gulp 4: Gulp 4 — Актуальное и исчерпывающее руководство для самых маленьких

Краткое руководство по переходу на gulp 4 | Автор Jhey Tompkins

Фото Toa Heftiba на Unsplash

Что мне нужно знать? Каково влияние?

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

·

Чтение: 4 мин.

·

17 марта 2016 г.

Новая версия gulp уже здесь. Что вам, , нужно знать ? Ваш gulpfile сломается?

В журнале изменений для [email protected] перечислены различные изменения. Большинство не ломаются. Основное кардинальное изменение — введение gulp.series и gulp.parallel .

Прежде чем идти дальше, спасибо Gulp за то, что он поделился этим руководством в Твиттере 🐦!

Для тех, кто в лагере TL;DR — незначительное влияние. Ваши задачи сломаются, если они используют параметр списка для определения зависимостей задач. Однако это не огромный рефакторинг, чтобы вернуть все в рабочее состояние. Вы можете увидеть суть использования [email protected] ниже, а вот ссылка на шаблон gulp с использованием gulp@4. 0 .

Это большое изменение. Кажется, были предприняты большие усилия, чтобы обеспечить больший контроль над выполнением задач 🛂

Всегда параллельно или в цепочке ⛓

В предыдущих версиях gulp мы могли передать параметр списка задаче. Это определит набор задач, которые будут выполняться перед этой задачей.

 gulp.task('a', ['b', 'c'], function () { // сделать что-то}) 

В этом примере задача a зависит от задач b и c запускать до того как будет. Задачи b и c будут выполняться параллельно. У вас нет контроля над их порядком выполнения, если вы не создадите цепочку;

 gulp.task('a', ['c'], function () { // делаем что-то}) 
gulp.task('c', ['b'], function () { // делаем что-то} )

Это обеспечивает следующий порядок b , затем c , затем a . Если вам нужно связать задачи в цепочку, это может скоро запутаться. Метаданные задач и хорошие документы могут помочь, но не будет ли намного проще иметь что-то вроде;

 gulp.task('a', series(['b', 'c']), function () { // сделать что-то}) 

Это почти то, что вы получаете с [email protected] 🎉

Новички в блоке

 gulp.series() 
gulp.parallel()

Довольно интуитивно понятно. Параметр списка устарел 👢

Если мы посмотрим на наш первый пример;

 gulp.task('a', ['b', 'c'], function () { // сделать что-то }) 

Чтобы преобразовать это для [email protected]

 gulp.task('a' , gulp.series(gulp.parallel('b', 'c'), function () { 
// сделай что-нибудь
}))

Если вы переходите на [email protected] и еще этого не сделали, вы, вероятно, захотите прекратить использование анонимных функций. Они печатают при запуске и не очень полезны при просмотре метаданных задачи. Если вы не использовали метаданные задачи, я рекомендую это сделать. Вы можете прочитать об этом здесь.

Вы можете изменить это на

 gulp.task('a', gulp.series(gulp.parallel('b', 'c'), function a () { 
// сделать что-то
}))

Но чтобы было еще лучше 👍

 var a = function () { // что-то делаем } 
gulp.task('a', gulp.series(gulp.parallel(b, c), a))

Или лучше

 var a = gulp.series(gulp.parallel(b, c), a) 
module.exports = { a:a }

Да, это действительно работает. Вы можете экспортировать функций как задачи. Это не относится к [email protected] , но если вы переключаетесь, почему бы не попробовать что-то новое? Вы можете увидеть больше на экспорта в качестве задач здесь.

Я бы заменил переменную на объявление . Хотя это все равно будет работать через подъем.

 var doStuff = gulp.series(gulp.parallel(b, c), a) 
module.exports = { doStuff: doStuff }

Пойдем немного дальше. Скорее всего, вы используете более новый синтаксис JavaScript через babel и т. д.0048 export const doStuff = gulp.series(gulp.parallel(b, c), a)

Это аккуратно 😎

Если вы не возражаете, остальные примеры будут использовать более новый стиль синтаксиса 👍

Верно, вернуться к [email protected] . Новый API побуждает вас больше думать о фактической структуре ваших задач сборки. Он также поддерживает более мелкие комплексные задачи, которые обеспечивают большую гибкость при внесении изменений.

Реальный пример

Рассмотрим реальный вариант использования.

Обычной задачей по умолчанию является что-то вроде develop . Возможно, когда-то это выглядело так:

 gulp.task('develop', ['serve', 'watch']) 

Должно быть понятно, что делают эти задачи;

  • serve — обслуживает активы на локальном статическом сервере
  • watch — следит за всем исходным кодом и запускает компиляцию при изменении

Это имеет смысл запускать в parallel

9 0048 const defaultTasks = gulp. parallel (подавать, смотреть)
export default defaultTasks

Пример использования серии ? Вполне вероятно, что задача serve захочет скомпилировать активы перед обслуживанием. Что-то вроде

 const compileAssets = gulp.parallel([compileScript, compileStyle]) 
const startServer = () => { // magic }
const serve = gulp.series(compileAssets, startServer)
export { serve }

Миграция to [email protected] должно быть довольно просто. Документация хорошая, и есть много ресурсов, которые помогут вам, если вы застряли. Я оставил несколько ссылок ниже и пример суть с использованием нового синтаксиса. Вы также можете проверить шаблон gulp , используя [email protected] здесь 👍🤓

Как всегда, любые вопросы или предложения, пожалуйста, не стесняйтесь оставлять ответ или чирикать мне 🐦!

Некоторые ссылки

  • Экспорт в виде задач — Gulp на Github
  • Метаданные пользовательских задач — Gulp на Medium

Суть

✉️ Подписаться на 902 21 CodeBurst’s один раз в неделю Email Blast , 🐦 Следите за CodeBurst на Twitter , просмотр 🗺️ 900 15 Дорожная карта для веб-разработчиков на 2018 год и 🕸️ Изучите веб-разработку с полным стеком .

Учебник: Node 12 LTS + Gulp 4 + VS2019 | Тристрам Толлидей

Как срывать пластырь. Больно, но стоит потери волос.

Тристрам Толлидей

·

Читать

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

·

Чтение: 6 мин.

·

31 октября 2019 г.

последние версии Node, Gulp и Visual Studio 2019 Я буду говорить о них вместе, так как это общий рецепт, и после нескольких часов кровавого пота и поиска в stackoverflow/gitrepo вы можете учиться на моей боли.

Следуя этому руководству, вы сможете запустить свой проект в Task Runner Explorer в Visual Studio 2019. Пойдем.

Предупреждение. Если вы находитесь в середине спринта, возможно, сейчас не время для обновления. вам понадобится хороший час, чтобы убедиться, что все работает гладко, и у вас есть время исправить ошибку

Ура Ура, с недавним объявлением NodeJs о выходе Node 12 из LTS, стоит вернуться к устаревшим проектам. По сути, долгосрочная поддержка означает, что эта версия Node будет получать исправления ошибок и исправления безопасности в течение длительного времени. В случае v12 будет безопасно использовать до апреля 2022 года , что означает, что обновление до него будет все, что вам нужно сделать еще 2 с небольшим года.

Текущая версия Windows

Если вы запускаете свои проекты на Node 10, вам хватит еще на год, поэтому не спешите обновляться, особенно если вы используете старые пакеты, подверженные конфликтам.

Однако, если вы используете Node 8 или ниже 😬, вам придется обновиться до Нового года 2019, чтобы обеспечить безопасность вашего проекта.

Узел 13 тоже не работает. Почему бы не обновить это вместо этого?

Нечетное количество версий Node — это экспериментальные ветки, которые не будут получать долгосрочную поддержку. Если вы хотите поэкспериментировать с последними предложениями узла, во что бы то ни стало запустите свой проект на узле 13 (хотя обязательно рассмотрите nvm). Если вы запускаете производственный проект для клиента или бизнеса, придерживайтесь выпусков LTS.

Установка узла 12

Выберите вариант установки:

A) Стандартная установка (без nvm) просто загрузите и установите

B) установка nvm при условии, что вы уже используете nvm (инструкции по установке в ссылке, если нет), добавление узла 12 по-прежнему является простым процессом:

 доступен список nvm 
доступен полный список выпусков

в строке долгосрочной поддержки , помните последнюю версию 12, поэтому в приведенном выше примере это 12. 13.0

 nvm install 12.13.0 
// сделайте себе cuppanvm use 12.13.0

🎉 Теперь вы гордый пользователь узла .JS 12 экземпляров 🎉 9

ReferenceError: primordials не определен

Gulp 3 имеет зависимости, с которыми Node 12 не может справиться. Итак, следующий шаг — обновить gulp до версии 4, последней и лучшей версии Gulp.

Gulp 4 — Dependency Hell

Последний и лучший, но нужно немного повозиться

Итак, откройте ваш package.json для вашего проекта и замените текущий gulp ( 3.x.x ) с последний стабильный выпуск gulp, на момент написания его 94.0.2

Если вы хотите использовать Gulp 4 с проводником диспетчера задач в Visual Studio 2019, вам также потребуется установить его глобально с npm install [email protected] -g Если вы этого не сделаете эта Visual Studio 2019 не сможет обнаружить gulp и не покажет задачи как доступные.

Как только мы закончим с этим, нам нужно обновить наши зависимости gulp, это совсем другая игра. У каждой зависимости есть свой собственный ад, но быстрая проверка межсетевых сетей поможет вам с вашими конкретными модулями.

Однако… вот два, которые доставили мне наибольшее огорчение:

Какими бы замечательными ни были SASS и Gulp, я не могу вспомнить ни одной новой установки gulp-sass/node-sass, которая прошла бы гладко. Сохраняйте хладнокровие во время этого процесса, в конце концов вы его запустите. Лучший совет, который я могу дать:

1. Уничтожьте каталог node_modules. Удалить, удалить, стереть. Если его след существует, он будет преследовать вас и потерпит неудачу.

2. Замените новой версией в вашем package.json 94.0.2 , что удобно совпадает с версией Gulp, которую вы используете, и я предполагаю, что она связана с ней.

3. Если вы по-прежнему получаете сообщения об ошибках, убедитесь, что вы запускаете gulp из консоли с правами администратора.

4. Внимательно прочитайте ошибки, они могут выглядеть как битая стена текста, но там будет подсказка, чего не хватает в сообщении.

gulp-msbuild

Это немного странная зависимость, и она действительно применима только к проектам, использующим специальные платформы, такие как .NET, поэтому большинство людей могут ее пропустить. Однако, если вы используете gulp-msbuild У меня есть один простой совет: удалите его и замените на msbuild . Это гораздо более удачный и чистый пакет, в нем больше смысла, и, кажется, он реже выходит из строя.

Пример задачи msbuild в gulp 4

Со всем, что добавлено в ваш package.json, вы сможете запустить npm install . Если все прошло успешно, у вас не должно быть ошибок и, что еще лучше, у вас не должно быть уязвимостей.

Учитывая приведенный выше совет, вы должны быть в хорошей форме, базовая миграция не слишком сложна, поскольку это скорее изменение синтаксиса, чем полное переписывание. Если у вас возникают проблемы с определенным плагином gulp, обычно вам нужно заменить его более современным плагином gulp. gulp-util устарел в пользу отдельных плагинов, поэтому просто следите за консолью при запуске gulp, и она подскажет, что нужно исправить.

Пример обновления

Это немного более подробно, но в целом выглядит аккуратнее и современнее. В Gulp 4 есть отличная документация по этому процессу и различным способам, которыми вы можете сообщить Gulp, когда ваша задача выполнена.

Если все хорошо, теперь вы сможете открыть Visual Studio 2019 и увидеть, как работает средство запуска задач:

Вот почему мы это сделали.

Иногда самые неблагодарные задачи являются самыми трудными, но с точки зрения ремонтопригодности, безопасности и прогресса они приносят наибольшее удовлетворение. Теперь идите вперед, товарищ Node 12er… и создавайте инновационные вещи.

Уязвимости пакетов npm

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

Visual Studio 2019 Task Runner Explorer

Чтобы Task Runner Explorer работал с Gulp, необходимо правильно настроить несколько вещей:

  1. У вас должен быть файл с именем gulpfile.js в корне вашего проекта .
  2. У вас должен быть package.json с зависимостями или devDependencies
  3. Gulp должен быть установлен глобально и локально (как указано в вашем package.json )
  4. Любые модули, упомянутые в вашем файле gulp, должны быть в вашем package.json , консоль вывода сообщит вам, что не так. Опять же, это может выглядеть как стена текста, но там будут подсказки к тому, чего не хватает.

Visual Studio 2019 по-прежнему считает, что использует более старую версию узла

Это вызвано тем, что VS2019 не находит новый узел, поэтому вам нужно добавить его путь непосредственно в VS.

Оставить комментарий

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *