2016-10-11 40 views
3

我用一口-stylefmt和運行它每次我保存任何CSS文件:我想自動修復我的CSS源文件,但我得到一個無限循環

function stylelint() { 
    return gulp.src('src/**/*.css') 
    .pipe($.stylefmt()) 
    .pipe(gulp.dest('src/')); 
} 

同時gulp.watch手錶路徑src/**/*.css並再次運行stylelint任務。

控制檯輸出:

[16:32:24] Starting 'stylelint'... 
[16:32:25] Finished 'stylelint' after 554 ms 
[16:32:25] Starting 'stylelint'... 
[16:32:25] Finished 'stylelint' after 60 ms 
[16:32:25] Starting 'stylelint'... 
[16:32:25] Finished 'stylelint' after 33 ms 
[16:32:25] Starting 'stylelint'... 
[16:32:25] Finished 'stylelint' after 36 ms 
[16:32:26] Starting 'stylelint'... 
[16:32:26] Finished 'stylelint' after 34 ms 
[16:32:26] Starting 'stylelint'... 
[16:32:26] Finished 'stylelint' after 29 ms 
[16:32:26] Starting 'stylelint'... 
[16:32:26] Finished 'stylelint' after 27 ms 
[16:32:26] Starting 'stylelint'… 
[16:32:26] Finished 'stylelint' after 32 ms 

有一種方法來糾正這種行爲,並運行stylelint任務只有一次?

UPD。我加了gulp-cached,現在它只運行兩次。我可以改進它運行一次嗎?

function stylelint() { 
    return gulp.src('src/**/*.css') 
    .pipe($.cached('stylelint')) 
    .pipe($.stylefmt()) 
    .pipe($.cached('stylelint')) 
    .pipe(gulp.dest('src/')); 
} 
+4

可能的複製[GULP:修改的地方被監視的文件,而不會導致一個無限循環(HTTP://計算器。 com/questions/37602702/gulp-modify-a-watched-file-in-place-without-cause-an-infinite-loop) –

+0

@SvenSchoenung謝謝,但它有部分幫助。有總比沒有好。現在它只運行兩次:) 我應該刪除我的問題嗎?我是新來的。 –

+1

用只應運行一次任務的解決方案編輯答案。 –

回答

1

我想我重複的解決方案由1自@SvenSchoenung和gulp.lastRun。在我來說,我做到了不一飲而盡緩存,但我用gulp4的

function stylelint() { 
    return gulp.src('src/**/*.css', {since: gulp.lastRun(stylelint)}) 
.pipe($.stylefmt()) 
.pipe(gulp.dest('src/')); 
} 
相關問題