Как в Gulp 4 запустить одну задачу внутри другой?

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

Для запуска одной задачи внутри другой в Gulp 4.x вам понадобится использовать следующие концепции:

1. gulp.series: функция, которая позволяет создавать последовательную цепочку из задач. Она принимает список задач в качестве аргументов и гарантирует, что каждая задача выполняется в указанном порядке.

2. gulp.parallel: функция, которая позволяет создавать параллельные цепочки задач. Она также принимает список задач в качестве аргументов, но в отличие от gulp.series выполняет их параллельно, то есть одновременно.

3. gulp.task: функция, которая позволяет определить задачи в Gulp. Она принимает два аргумента: имя задачи и функцию, которая содержит код для выполнения задачи.

Теперь рассмотрим пример, который показывает, как можно запустить одну задачу внутри другой:

const gulp = require('gulp');

// Определяем задачу 'task1'
gulp.task('task1', function(done) {
  console.log('Задача 1');
  done();
});

// Определяем задачу 'task2', которая вызывает 'task1'
gulp.task('task2', gulp.series('task1', function(done) {
  console.log('Задача 2, вызывающая задачу 1');
  done();
}));

// Определяем задачу 'default', которая вызывает 'task2'
gulp.task('default', gulp.series('task2', function(done) {
  console.log('Задача по умолчанию, вызывающая задачу 2');
  done();
}));

В приведенном примере задача 'task2' вызывает задачу 'task1' с помощью gulp.series. А задача 'default' вызывает задачу 'task2' также с помощью gulp.series. Таким образом, при запуске задачи 'default' будут выполнены все три задачи в указанном порядке.

Команда gulp.task('имя задачи', ...), используемая для определения задачи, также может быть заменена сущностью gulp.task('имя задачи', gulp.series(...)), если вам необходимо вызвать несколько задач последовательно.

Важно отметить, что в Gulp 4.x устаревший синтаксис использования точки с запятой для определения зависимостей задач не работает. Вместо этого вы должны использовать функций gulp.series и gulp.parallel для определения последовательной и параллельной зависимостей соответственно.