Ошибка «Задача не определена» при переходе с Gulp 3 на Gulp 4 - PullRequest
0 голосов
/ 13 марта 2020

Я пытаюсь преобразовать свой файл gulp 3 в gulp 4 после обновления до Node v12, и я по-прежнему ошибаюсь даже после прочтения учебников / примеров. Я получаю AssertionError [ERR_ASSERTION]: Task never defined: sass error

Мой файл gulpfile. js file:

const gulp        = require('gulp');
const browserSync = require('browser-sync').create();
const sass        = require('gulp-sass');

// Compile Sass & Inject Into Browser
gulp.task('sass', gulp.series('sass'), function() {
    return gulp.src(['node_modules/bootstrap/scss/bootstrap.scss', 'src/scss/*.scss'])
        .pipe(sass())
        .pipe(gulp.dest("src/css"))
        .pipe(browserSync.stream());
});

// Move JS Files to src/js
gulp.task('js', gulp.series(['js']), function() {
    return gulp.src(['node_modules/bootstrap/dist/js/bootstrap.min.js', 'node_modules/jquery/dist/jquery.min.js','node_modules/popper.js/dist/umd/popper.min.js'])
        .pipe(gulp.dest("src/js"))
        .pipe(browserSync.stream());
});

// Watch Sass & Serve
gulp.task('serve', gulp.series(['sass']), function() {

    browserSync.init({
        server: "./src"  
    });

    gulp.watch(['node_modules/bootstrap/scss/bootstrap.scss', 'src/scss/*.scss'], gulp.series('sass'));
    gulp.watch("src/*.html").on('change', browserSync.reload);
});

// Move Fonts to src/fonts
gulp.task('fonts', gulp.series(['fonts']), function() {
  return gulp.src('node_modules/font-awesome/fonts/*')
    .pipe(gulp.dest('src/fonts'))
})

// Move Font Awesome CSS to src/css
gulp.task('fa', gulp.series(['fa']), function() {
  return gulp.src('node_modules/font-awesome/css/font-awesome.min.css')
    .pipe(gulp.dest('src/css'))
})

gulp.task('default', ['js','serve', 'fa', 'fonts']);

Любая помощь очень ценится, спасибо!

1 Ответ

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

Неправильно запускать эту форму:

gulp.task('sass', gulp.series('sass'), function() {

Это вызывает 'sass' в начале самой задачи 'sass'. Предположительно это вызвало бы бесконечность l oop. Я подозреваю, что это является причиной вашей ошибки, потому что вы вызываете задачу 'sass' до того, как она будет полностью определена.

gulp.task принимает только два аргумента: имя и одну функцию, так что это правильно:

gulp.task('sass', function() {

, поэтому измените на все ваши задачи , кроме:

gulp.task('serve', gulp.series(['sass']), function() { 

, где вы можете запустить задачу 'sass' перед запуском сервера. Но вы все равно можете иметь только два аргумента для gulp.task, поэтому попробуйте

gulp.task('serve', gulp.series('sass', function() {

Наконец, этой строке

gulp.task('default', ['js','serve', 'fa', 'fonts']);

требуется gulp.series для правильной работы в gulp v4, поэтому попробуйте

gulp.task('default', gulp.series('js','serve', 'fa', 'fonts'));

После того, как вы внесете все эти изменения, посмотрите, есть ли другие ошибки.

...