2017-02-22 30 views
2

Я читал онлайн, что «run-sequence» будет проверять выполнение всех заданных задач синхронно. По какой-то причине это не так в моем случае. Я что-то упускаю?Выполнять задачи синхронно в gulp

«convertSassToCss» является задачей, которая не работает по назначению

Если бы я запускать задачи «cleanAllCss» и «» convertSassToCss seperatelly, он будет работать.

Идея заключается в том, чтобы сначала удалить все файлы CSS из каталога, а затем преобразовать все Sass файлов в CSS и поместите в очищенном реже

/// <binding BeforeBuild='clean, min:css' Clean='clean' /> 
 
"use strict"; 
 

 
var gulp = require("gulp"), 
 
    rimraf = require("rimraf"), 
 
    concat = require("gulp-concat"), 
 
    cssmin = require("gulp-cssmin"), 
 
    uglify = require("gulp-uglify"), 
 
    sass = require('gulp-sass'), 
 
    rename = require('gulp-rename'), 
 
    del = require('del'), 
 
    runSequence = require('run-sequence'); 
 

 

 
var paths = { 
 
    webroot: "./wwwroot/" 
 
}; 
 

 
paths.cssPath = paths.webroot + "css/*.css"; 
 
paths.cssOutputPath = paths.webroot + "css"; 
 

 
//sass 
 
paths.sassPath = paths.webroot + "sass/**/*.scss"; 
 
paths.sassOutputPath = paths.webroot + "./css/file"; 
 

 
gulp.task("cleanAllCss", function (cb) { 
 
    console.log("2 -- Removing all CSS files"); 
 
    del([paths.cssOutputPath + "/*.css"], cb); 
 
    console.log("2 -- DONE - Removed all css files"); 
 
}); 
 

 
gulp.task("convertSassToCss", function (cb) { 
 
    console.log("3 -- Converting all SASS files into corresponding CSS"); 
 
    gulp.src(paths.sassPath) 
 
     .pipe(sass()) 
 
     .pipe(gulp.dest(paths.cssOutputPath)); 
 
    console.log("3 -- DONE - Converting all SASS files into corresponding CSS"); 
 
}); 
 

 
//not working, should run in sequence 
 
gulp.task("convertAllSassIntoCssMin", function (callback) { 
 
    console.log("1 -- Converting all SASS files into corresponding min CSS files") 
 
    runSequence('cleanAllCss', 'convertSassToCss', callback); 
 
    console.log("1 -- DONE - Converting all SASS files into corresponding min CSS files") 
 
});

+0

Что вы подразумеваете под словом "not working"? Каков результат выполнения задачи convertAllSassIntoCssMin? Что напечатано на консоли? –

+0

Он не генерирует и не выводит файлы css в каталог, упомянутый выше. Консоль выдает 1,2,2,1, и, наконец, процесс завершен кодом 0. 3 никогда не достигается, но он должен – lucas

ответ

0

Проблема в задаче cleanAllCss. Второй параметр, принятый del, - options, а не обратный вызов, который вы пытаетесь передать. Обратный вызов никогда не выполняется. Попробуйте запустить его вручную, когда удаление завершено.

gulp.task("cleanAllCss", function (cb) { 
    console.log("2 -- Removing all CSS files"); 
    del([paths.cssOutputPath + "/*.css"]).then(paths => { 
     console.log("2 -- DONE - Removed all css files"); 
     cb(); 
    }; 

}); 
1

Я не могу говорить перспективы -sequence, поскольку я не использовал его раньше.

Однако, вы можете выполнять задачи в последовательности, используя функции зависимостей задачи Глоток «s, где задача будет НЕ бежать, пока это не зависимости закончили работу.

Ваши новые задачи подписи

  1. cleanAllCss остается прежним:

    gulp.task("cleanAllCss", function (cb) { ... }

  2. convertSassToCss изменения:

    gulp.task("convertSassToCss", ['cleanAllCss'], function (cb) { ... }

  3. convertAllSassIntoCssMin изменения:

    gulp.task("convertAllSassIntoCssMin", ['convertSassToCss'], function (cb) { ... }

Это гарантирует, что convertAllSassIntoCssMin не будет работать до тех пор, convertSassToCss не закончил, в свою очередь, не будет работать, пока cleanAllCss не закончит.

См проглатывать deps:

DEPS

Тип: Array

Массив задач, которые будут выполнены и завершены до вашей задачей будет выполнения.

gulp.task ('mytask', ['array', 'of', 'task', 'names'], function() {
// Do stuff}); Примечание. Выполняются ли ваши задачи до зависимостей ? Убедитесь, что ваши задачи зависимостей корректно используются подсказками асинхронного запуска : выполните обратный вызов или верните обещание или событие поток.

Вы также можете опустить функцию, если вы только хотите, чтобы запустить связку задач зависимостей:

gulp.task («сборки», [ «массив», «из», «задачи», «имена «]); Примечание. Задачи будут работать параллельно (все сразу), поэтому не предполагайте, что задачи начнутся/закончены по порядку.