Краткое руководство по переходу на 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
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 с проводником диспетчера задач в Visual Studio 2019, вам также потребуется установить его глобально с Как только мы закончим с этим, нам нужно обновить наши зависимости gulp, это совсем другая игра. У каждой зависимости есть свой собственный ад, но быстрая проверка межсетевых сетей поможет вам с вашими конкретными модулями. Однако… вот два, которые доставили мне наибольшее огорчение: Какими бы замечательными ни были SASS и Gulp, я не могу вспомнить ни одной новой установки gulp-sass/node-sass, которая прошла бы гладко. Сохраняйте хладнокровие во время этого процесса, в конце концов вы его запустите. Лучший совет, который я могу дать: 1. Уничтожьте каталог node_modules. Удалить, удалить, стереть. Если его след существует, он будет преследовать вас и потерпит неудачу. 2. Замените новой версией в вашем 3. Если вы по-прежнему получаете сообщения об ошибках, убедитесь, что вы запускаете gulp из консоли с правами администратора. 4. Внимательно прочитайте ошибки, они могут выглядеть как битая стена текста, но там будет подсказка, чего не хватает в сообщении. Это немного странная зависимость, и она действительно применима только к проектам, использующим специальные платформы, такие как .NET, поэтому большинство людей могут ее пропустить. Однако, если вы используете Со всем, что добавлено в ваш package.json, вы сможете запустить Учитывая приведенный выше совет, вы должны быть в хорошей форме, базовая миграция не слишком сложна, поскольку это скорее изменение синтаксиса, чем полное переписывание. Если у вас возникают проблемы с определенным плагином gulp, обычно вам нужно заменить его более современным плагином gulp. Это немного более подробно, но в целом выглядит аккуратнее и современнее. В Gulp 4 есть отличная документация по этому процессу и различным способам, которыми вы можете сообщить Gulp, когда ваша задача выполнена. Если все хорошо, теперь вы сможете открыть Visual Studio 2019 и увидеть, как работает средство запуска задач: Иногда самые неблагодарные задачи являются самыми трудными, но с точки зрения ремонтопригодности, безопасности и прогресса они приносят наибольшее удовлетворение. Теперь идите вперед, товарищ Node 12er… и создавайте инновационные вещи. Если у вас есть уязвимости, исправление аудита Чтобы Task Runner Explorer работал с Gulp, необходимо правильно настроить несколько вещей: Это вызвано тем, что VS2019 не находит новый узел, поэтому вам нужно добавить его путь непосредственно в VS. Gulp 4 — Dependency Hell
package.json
для вашего проекта и замените текущий gulp ( 3.x.x
) с последний стабильный выпуск gulp, на момент написания его 94.0.2 npm install [email protected] -g
Если вы этого не сделаете эта Visual Studio 2019 не сможет обнаружить gulp и не покажет задачи как доступные. package.json 94.0.2
, что удобно совпадает с версией Gulp, которую вы используете, и я предполагаю, что она связана с ней. gulp-msbuild
gulp-msbuild
У меня есть один простой совет: удалите его и замените на msbuild
. Это гораздо более удачный и чистый пакет, в нем больше смысла, и, кажется, он реже выходит из строя. npm install
. Если все прошло успешно, у вас не должно быть ошибок и, что еще лучше, у вас не должно быть уязвимостей. gulp-util
устарел в пользу отдельных плагинов, поэтому просто следите за консолью при запуске gulp, и она подскажет, что нужно исправить. Пример обновления
Уязвимости пакетов npm
npm
должно устранить подавляющее большинство из них. Все остальное, что уязвимо, потребует ручной настройки, обычно обновления пакетов или замены их более современными эквивалентами. Вы можете найти эти неправильные пакеты с npm аудит
, а затем отслеживание проблемных пакетов. Visual Studio 2019 Task Runner Explorer
Visual Studio 2019 по-прежнему считает, что использует более старую версию узла gulpfile.js
в корне вашего проекта . package.json
с зависимостями или devDependencies package.json
) package.json
, консоль вывода сообщит вам, что не так. Опять же, это может выглядеть как стена текста, но там будут подсказки к тому, чего не хватает.