Глоток 4: «Вы забыли сообщить о завершении асинхронного в задаче наблюдения» - PullRequest
0 голосов
/ 08 февраля 2019

В моем Gulpfile у меня есть проблема, что я всегда получаю сообщение об ошибке в консоли:

[22:33:32] The following tasks did not complete: default, watch, watch:views, watch:styles, watch:scripts
[22:33:32] Did you forget to signal async completion?

Но, насколько я вижу, я только что определил некоторые задачи наблюдения, ничего подозрительного в этом нет,Так где же ошибка в задачах gulp watch?

gulp.task('reload', (done) => {
 browserSync.reload();

 done();
});

gulp.task('watch:views', () => {
 gulp.watch(getPath(paths.views.watch), gulp.series('lint', gulp.parallel('views', 'assets'), 'reload'));
});

gulp.task('watch:styles', () => {
 gulp.watch(getPath(paths.styles.all), gulp.series('lint', gulp.parallel('styles', 'assets'), 'reload'));
});

gulp.task('watch:scripts', () => {
 gulp.watch(getPath(paths.scripts.all), gulp.series('scripts', 'reload'));
});

gulp.task('watch', gulp.parallel('watch:views', 'watch:styles', 'watch:scripts'));

gulp.task('default', gulp.series(
 'clean',
 'lint',
 gulp.parallel(['views', 'styles', 'scripts', 'assets']),
 'serve',
 'watch',
));

Обновлено: Задачи ресурсов, стилей и сценариев.

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

gulp.assets.js

import gulp from 'gulp';

import { paths, getPath, getTargetPath } from './paths';

export default () => {
  return gulp.src(getPath(paths.copy.src), {
    base: getPath(paths.copy.base)
  })
    .pipe(gulp.dest(getTargetPath(paths.target.assets)));
}

gulp.styles.js

import gulp from 'gulp';
import sass from 'gulp-sass';
import rename from 'gulp-rename';
import cleanCSS from 'gulp-clean-css';
import gulpif from 'gulp-if';

import { paths, getPath, getTargetPath } from './paths';
import { isProd } from './env';

export default () => {
  return gulp
    .src(getPath(paths.styles.main))
    .pipe(sass().on('error', sass.logError))
    .pipe(gulpif(isProd(), cleanCSS()))
    .pipe(rename({ dirname: '' }))
    .pipe(gulp.dest(getTargetPath(paths.target.assets)));
};

gulp.scripts.js

import gulp from 'gulp';
import browserify from 'browserify';
import source from 'vinyl-source-stream';
import buffer from 'vinyl-buffer';
import babelify from 'babelify';
import rename from 'gulp-rename';
import gulpif from 'gulp-if';
import uglify from 'gulp-uglify-es';

import { paths, getPath, getTargetPath } from './paths';
import { isProd } from './env';

export default () => {
  return browserify({
    entries: getPath(paths.scripts.main),
    debug: true,
    extensions: ['.js', '.jsx']
  })
  .transform(babelify.configure({
    presets: ["@babel/preset-env", "@babel/preset-react"]
  }))
  .bundle()
  .pipe(source('main.js'))
  .pipe(buffer())
  .pipe(gulpif(isProd(), uglify()))
  .pipe(rename({ dirname: '' }))
  .pipe(gulp.dest(getTargetPath(paths.target.assets)));
}
...