parallel()#

Объединяет функции задач и/или составные операции в более крупные операции, которые будут выполняться одновременно. Нет никаких ограничений на глубину вложенности составных операций, использующих series() и parallel().

Применение#

const { parallel } = require('gulp');
function javascript(cb) {
// тело опущено
cb();
}
function css(cb) {
// тело опущено
cb();
}
exports.build = parallel(javascript, css);

Подпись#

parallel(...tasks)

Параметры#

параметртиппримечание
tasks
(required)
function
string
Любое количество функций задачи может быть передано как отдельные аргументы. Строки можно использовать, если вы ранее регистрировали задачи, но это не рекомендуется.

Возвращается#

Составная операция, которая должна быть зарегистрирована как задача или вложена в другие композиции series и/или parallel.

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

Ошибки#

Если задачи не переданы, выдает ошибку с сообщением: "One or more tasks should be combined using series or parallel".

Когда передаются недопустимые задачи или незарегистрированные задачи, выдает ошибку с сообщением: "Task never defined".

Прямые ссылки#

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

В более новых версиях вы получите сообщение об ошибке «Задача не определена», если попытаетесь использовать прямые ссылки. Вы можете столкнуться с этим при попытке использовать exports для регистрации задач и составление задач по строкам. В этом случае используйте именованные функции вместо строковых ссылок.

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

Избегайте дублирования задач#

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

Задача clean, на которую ссылаются две разные композиции, будет выполняться дважды и приведет к нежелательным результатам. Вместо этого выполните рефакторинг задачи clean, чтобы она была указана в окончательной композиции.

Если у вас есть такой код:

// Это НЕПРАВИЛЬНО
const { series, parallel } = require('gulp');
const clean = function(cb) {
// тело опущено
cb();
};
const css = series(clean, function(cb) {
// тело опущено
cb();
});
const javascript = series(clean, function(cb) {
// тело опущено
cb();
});
exports.build = parallel(css, javascript);

Переходите на это:

const { series, parallel } = require('gulp');
function clean(cb) {
// тело опущено
cb();
}
function css(cb) {
// тело опущено
cb();
}
function javascript(cb) {
// тело опущено
cb();
}
exports.build = series(clean, parallel(css, javascript));