2016-10-11 10 views
3

が、私は一口-stylefmtを使用する無限ループを取得し、それは私がすべてのCSSファイル保存するたびに実行します。私は自動的に私のCSSのソースファイルを修正したいが、私は

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

同時にgulp.watch腕時計src/**/*.cssstylelintタスクを再度実行してください。

コンソール出力:

[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タスクのみ1回実行する方法はありますか?

UPD。私はをgulp-cachedと追加しましたが、今は2回しか実行されません。一度実行すると改善できますか?

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

可能な重複使用[GULPを:無限ループを発生させずに適所に見てファイルを変更]のhttp(:// stackoverflowの。 com/questions/37602702/gulp-modify-a-watch-file-in-place-without-cause-an-infinite-loop) –

+0

@SvenSchoenungありがとうございました。何もないよりマシ。今度は2回しか実行されません:) 質問を削除してもよろしいですか?私はここで新しいです。 –

+1

タスクを1回だけ実行する必要があるソリューションで回答を編集しました。 –

答えて

1

私はとgulp.lastRun以来と@SvenSchoenungことによって溶液1を繰り返したと思います。私の場合は、一気-キャッシュさせずにそれをやったが、私はのgulp4

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