После перехода с 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
, все эти задачи будут выполняться правильно!
Я надеюсь, если у меня есть объяснение и решение, почему это происходит.