@BarneyGumble

Как запустить в Gulp таск только после завершения других тасков?

Добрый день, имею следующий gulpfile.js:

var gulp = require('gulp'),
    sass = require('gulp-sass'), 
    concatcss = require('gulp-concat'),
    clean = require('gulp-clean'),
    plumber = require('gulp-plumber');

// Собирает все scss файлы в директории blocks и склеивает их в один
gulp.task('blocks', function() {
    return gulp.src('app/scss/blocks/**/*.scss')
        .pipe(plumber())
    	.pipe(concatcss("_blocks.scss"))
    	.pipe(gulp.dest('app/scss/build/'));
});

// Запускает генерацию финального css файла из имеющихся scss
gulp.task('sass', function() {
    return gulp.src('app/scss/main.scss')
        .pipe(plumber())
        .pipe(sass())
        .pipe(gulp.dest('app/css'))
});

// Очищает результирующий файл сборки для последующей записи в него
gulp.task('clean', function () {  
    return gulp.src('app/scss/build/_blocks.scss', {read: false})
        .pipe(clean());
});


gulp.task('watch', function() {
    gulp.watch(['app/scss/**/*.scss'], ['clean']);
    gulp.watch(['app/scss/blocks/**/*.scss'], ['blocks']);
    gulp.watch(['app/scss/**/*.scss'], ['sass']);
});


Содержимое app/scss/main.scss:
@import 'vendors/normalize';
@import 'utils/variables';
@import 'base/fonts';
@import 'utils/placeholders';
@import 'build/blocks';
@import 'base/media';


При сохранении файла в директории app/blocks получаю следующую ошибку:
Error in plugin 'gulp-sass'
Message:
    app\scss\main.scss
Error: File to import not found or unreadable: build/blocks.
       Parent style sheet: C:/Users/kalashnikov/Desktop/layout/relaxlux/app/scss/main.scss
        on line 5 of app/scss/main.scss


Как я понимаю, консоль мне говорит, что не может прочесть файл blocks.scss, потому что наверняка пытается прочесть его в тот момент, когда его удалил таск clean, а таск blocks ещё не успел отработать

Так ли это и если да, то как мне запустить таск sass только после того, как отработают другие таски?
  • Вопрос задан
  • 260 просмотров
Решения вопроса 1
EnChikiben
@EnChikiben
gulp.task('watch', function() {
    gulp.watch(['app/scss/**/*.scss'], ['clean','blocks','sass']);
});

а так?
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Karmov69
Он вроде и так по порядку их включает
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы