Gulp4 с ошибкой завершения задачи jekyll Signal - PullRequest
0 голосов
/ 11 октября 2019

Это мое сообщение об ошибке.

Следующие задачи не были выполнены: scssTask, jsTask, imgTask Вы забыли сообщить о завершении асинхронного?

Я знаю, что этоо явном сигнале завершения задачи для каждой функции. Я думаю, что сделал это в последний exports.default, может быть, это неправильно. но я новичок в глотке. кто-то, пожалуйста, помогите мне решить эту ошибку.

это мой gulpfile.js

const { src, dest, watch, series, parallel } = require('gulp');

var uglify = require('gulp-uglify');

const sourcemaps = require('gulp-sourcemaps');
const sass = require('gulp-sass');
const postcss = require('gulp-postcss');
const autoprefixer = require('autoprefixer');
const cssnano = require('cssnano');
const imagemin = require('gulp-imagemin');
const newer = require('gulp-newer');
const cp = require("child_process");
const browserSync = require('browser-sync').create();

const files = {
    scssPath: '_sass/**/*.scss',
    cssPath: 'assets/css/**/*.scss',
    jsPath: 'assets/js/main.js',
    imgPath: 'assets/img/**/*'
}

function scssTask(){
    return src(files.scssPath)
        .pipe(sourcemaps.init()) // initialize sourcemaps first
        .pipe(sass().on('error', sass.logError))
        .pipe(postcss([ autoprefixer(),cssnano() ]))
        .pipe(sourcemaps.write('.')) // write sourcemaps file in current directory
        .pipe(dest('_site/assets/css/')) // put final CSS in dist folder
        .pipe(browserSync.reload({stream:true}))
}

function jsTask(){
    return src([
        files.jsPath
    ])
        .pipe(uglify())
        .pipe(dest('_site/assets/js/'))
        .pipe(browserSync.reload({stream:true}))
}

function imgTask() {
    return src(files.imgPath)
        .pipe(newer("_site/assets/img/"))
        .pipe(imagemin())
        .pipe(dest("_site/assets/img/"))
        .pipe(browserSync.reload({stream:true}))
}

function jekyll() {
    return cp.spawn("bundle", ["exec", "jekyll", "build"], { stdio: "inherit" });
}

function watchTask(){

    watch(files.scssPath, scssTask);
    watch(files.jsPath, jsTask);
    watch(['_includes/**', '_layouts/**/*', 'pages/**', '*.html'], series(jekyll, browserSyncReload));
    watch(files.imgPath, imgTask);
}

function browserSyncServe(done) {
    browserSync.init({
        server: {
            baseDir: "_site"
        }
    });
    done();
}

function browserSyncReload(done) {
    browserSync.reload();
    done();
}

exports.default = series(
    parallel(jekyll, scssTask, jsTask, imgTask),
    browserSyncServe,
    watchTask
);
...