После перехода с gulp v3 на v4 gulp.series не запускает все примененные задачи - PullRequest
0 голосов
/ 01 ноября 2019

После перехода с gulp v3 на v4 мне придется поменять использование плагина последовательности выполнения с новыми методами, предоставляемыми gulp v4, которые являются последовательными и параллельными. Но я обнаружил, что не все задачи применяются после этого обмена.

Я следовал учебным пособиям для преобразования между использованием последовательности выполнения и последовательных и параллельных методов, предоставляемых gulp 4, но, как я сказал, не все задачиapply.

Вот оригинальный код gulpfile.js с gulp v3:

// Multi watch
gulp.task( "watchChanges" , function() { // tasks done before watch
    gulp.watch( sourceFolder + "/scss/**/*.scss" , ["sass"] ); // src , task name
    gulp.watch( sourceFolder + "/*.html" , browserSync.reload ); // watch html (src)
    gulp.watch( sourceFolder + "/js/**/*.js" , browserSync.reload ); // watch js (src)
});

gulp.task( "default" , function( callback ) {
    runSequence( [ "sass" , "browserSync" ] , "watchChanges" ,
        callback
    )
});

А вот преобразование кода, которое я применил для gulp v4:

// Multi watch
gulp.task( "watchChanges" , function() { // tasks done before watch
    gulp.watch( sourceFolder + "/scss/**/*.scss" , gulp.series( "sass" ) ); // src , task name  
    gulp.watch( sourceFolder + "/*.html" ).on( "change" , browserSync.reload ); // watch html (src)
    gulp.watch( sourceFolder + "/js/**/*.js" ).on( "change" , browserSync.reload ); // watch js (src)
});

// default task
gulp.task( "default" , gulp.series( gulp.parallel( "sass" , "browserSync" ) , "watchChanges" ) );

И для использования sass и browserSync:

// sass task
gulp.task( "sass" , function() {
    return gulp.src( sourceFolder + "/scss/**/*.scss" ) // source
        .pipe( sourcemaps.init() ) // sourcemaps init
        .pipe( sass({ outputStyle: "compressed" }).on( "error" , sass.logError ) ) // define plugin
        .pipe( sourcemaps.write("./sourcemaps") ) // sourcemaps write
        .pipe( gulp.dest( sourceFolder + "/css" ) ) // destination
        .pipe( browserSync.stream() ); // injecting css in browser
});

// browserSync task
gulp.task( "browserSync" , function() {
    browserSync.init({
        server: {
            baseDir: sourceFolder
        }
    });
});

Для использования gulp v3 задачи обычно выполняются в последовательности sass - browserSync - watchChanges , но после внесения изменений в gulp v4, просто sass и browserSync запустите, но для watchChanges он не запускается!

, но если я попробую gulp sass browserSync watchChanges, все эти задачи будут выполняться правильно!

Я надеюсь, если у меня есть объяснение и решение, почему это происходит.

Ответы [ 2 ]

1 голос
/ 10 ноября 2019

Try:

// browserSync task
gulp.task( "browserSync" , function(done) {
    browserSync.init({
        server: {
            baseDir: sourceFolder
        }
    });
    done();
});

Поскольку вы не сигнализировали о завершении задачи browserSync, gulp не может узнать, как перейти к следующей задаче. done в приведенном выше коде делает это.

0 голосов
/ 02 ноября 2019

Я с нетерпением жду помощи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...