Gulp 4 множественных асин c подзадач - PullRequest
0 голосов
/ 12 марта 2020

как запустить несколько асин c подзадач в задаче Gulp? Обычно эта задача запускается и начинается копирование файлов, но в конце выдает ошибку.

  • Следующие задачи не были выполнены: сборка, копирование: по умолчанию

  • Вы забыли сообщить о завершении асин c?

gulp.task('copy:default', () => {

  const fonts = gulp.src(['src/fonts/**/*'])
    .pipe(gulp.dest('dist/fonts'));
  const images = gulp.src(['src/images/**/*'])
    .pipe(gulp.dest('dist/images'));
  const scripts = gulp.src(['src/scripts/**/*'])
    .pipe(gulp.dest('dist/scripts'));

  return ['fonts', 'images', 'scripts']

});

Я использую это так:

gulp.task('build', gulp.series('clean:dist', 'copy:default', 'sass'));

Ответы [ 2 ]

0 голосов
/ 13 марта 2020

Вот рабочее решение:

gulp.task('copy:default', () => {
  const finalPromise = new Promise(finalResolve => {

    const fonts = new Promise(resolve => {
      gulp.src(['src/fonts/**/*'])
        .pipe(gulp.dest('dist/fonts'))
        .on('end', resolve);
    })

    const images = new Promise(resolve => {
      gulp.src(['src/images/**/*'])
        .pipe(gulp.dest('dist/images'))
        .on('end', resolve)
    })

    const scripts = new Promise(resolve => {
      gulp.src(['src/scripts/**/*'])
        .pipe(gulp.dest('dist/scripts'))
        .on('end', resolve);
    })

    Promise.all([fonts, images, scripts]).then(result => {
      finalResolve(result);
    });
  });

  return finalPromise;
});
0 голосов
/ 12 марта 2020

Это return ['fonts', 'images', 'scripts'] просто возвращает массив строк, которого недостаточно.

Посмотрите на объединить поток и https://mariusschulz.com/blog/merging-two-gulp-streams, чтобы фактически вернуть потоки .

const merge = require('merge-stream');

gulp.task('copy:default', () => {

  const fonts = gulp.src(['src/fonts/**/*'])
    .pipe(gulp.dest('dist/fonts'));
  const images = gulp.src(['src/images/**/*'])
    .pipe(gulp.dest('dist/images'));
  const scripts = gulp.src(['src/scripts/**/*'])
    .pipe(gulp.dest('dist/scripts'));

  // return ['fonts', 'images', 'scripts']
  return merge(fonts, images, scripts);

});

или

gulp.task('copy:default', () => {

  return merge(
    gulp.src(['src/fonts/**/*'])
      .pipe(gulp.dest('dist/fonts')),
    gulp.src(['src/images/**/*'])
      .pipe(gulp.dest('dist/images')),
    gulp.src(['src/scripts/**/*'])
      .pipe(gulp.dest('dist/scripts'))
  ); 
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...