2016-12-02 100 views
0

我有一個手錶發生我的scss文件功能很好。進行更改時,任務正在運行。吞噬更改等待任務完成之前執行更改

var sassWatch = gulp.watch([paths.root + '**/*.scss'], ['sass']); 

現在,當檢測到變化時,我要帶已更改的文件,擴展名更改爲.css和再做點什麼說css文件。

sassWatch.on('change', function (ev) { 
     changeNotification('Sass file', ev.type, 'Running compilation'); 
     ev.path = ev.path.substr(0, ev.path.lastIndexOf(".")) + ".css"; 
     return gulp.src(ev.path).pipe(slang(ev.path)); // DO SOMETHING WITH CSS FILE 
    }); 

的問題是,青菜任務之前,對(「變化」 ......運行的最後一行結束。

[11:30:46] Sass file was changed. Running compilation & slinging to AEM. 
[11:30:46] Starting 'sass'... 
[11:30:46] Starting 'sass:compile'... 
[11:30:46] DO SOMETHING WITH CSS FILE 
[11:30:50] Finished 'sass:compile' after 4.59 s 
[11:30:50] Starting 'css:clean'... 
[11:30:50] Finished 'css:clean' after 3.45 ms 
[11:30:50] Finished 'sass' after 4.6 s 

有沒有一種方法,以防止部分或全部的?從任務完成之前執行切換功能我理想的情況是如下:

[11:30:46] Sass file was changed. Running compilation & slinging to AEM. 
[11:30:46] Starting 'sass'... 
[11:30:46] Starting 'sass:compile'... 
[11:30:46] Finished 'sass:compile' after 4.59 s 
[11:30:50] Starting 'css:clean'... 
[11:30:50] Finished 'css:clean' after 3.45 ms 
[11:30:50] Finished 'sass' after 4.6 s 
[11:30:50] DO SOMETHING WITH CSS FILE 

回答

1

run-sequence包讓我們在運行多任務一個接一個在您的CA。你不需要運行多個任務。你只需要運行一個任務,然後執行一個功能。

幸運的是run-sequence接受在所有任務完成運行時調用的回調函數。所以你真的只需要堅持整個DO SOMETHING WITH CSS FILE東西在那個回調函數中:

var runSequence = require('run-sequence'); 

gulp.watch([paths.root + '**/*.scss'], function (ev) { 
    runSequence('sass', function() { 
    changeNotification('Sass file', ev.type, 'Running compilation'); 
    ev.path = ev.path.substr(0, ev.path.lastIndexOf(".")) + ".css"; 
    return gulp.src (ev.path).pipe(slang(ev.path)); // DO SOMETHING WITH CSS FILE 
    }); 
});