В моем 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)));
}