# Композиции задач Gulp

Задачи Gulp можно объединять в группы (композиции), задачи в которых будут выполнены последовательно или параллельно.

Давайте посмотрим, как это делается. Для примера возьмем следующие задачи:

`function task1(cb) { cb(); } function task2(cb) { cb(); }`

## Последовательное выполнение

Для последовательного выполнения задач предназначена функция `series`. Эта функция параметрами принимает любое количество задач и выполняет их по очереди в порядке перечисления.

Для начала эту функцию нужно импортировать из библиотеки Gulp:

`const { series } = require('gulp');`

Теперь мы можем воспользоваться этой функцией:

`function taskD(cb) { series(task1, task2); cb(); } exports.default = taskD;`

Можно сразу экспортировать результат работы `series`, не создавая лишней функции для публичной задачи:

`exports.default = series(task1, task2);`

Создайте три задачи, выполняющиеся последовательно одна за другой.

## Параллельное выполнение

Для параллельного выполнения задач предназначена аналогичная функция `parallel()`. Давайте посмотрим на ее работу.

Для начала подключим ее:

`const { parallel } = require('gulp');`

Воспользуемся нашей функцией внутри публичной задачи:

`function taskD(cb) { parallel(task1, task2); cb(); } exports.default = taskD;`

Либо просто экпортируем результат работы:

`exports.default = parallel(task1, task2);`

Создайте три задачи, выполняющиеся параллельно.

## Комбинации

Функции `series` и `parallel()` можно вкладывать в друг друга в любых комбинациях, например, вот так:

`exports.default = series(task1, parallel(task2, task3));`

Создайте пять задач. Придумайте примеры комбинаций с этими задачами.

← →
↑