我想自动修复我的CSS源文件,但是我得到了无限循环

时间:2016-10-11 13:47:10

标签: css gulp stylelint

我使用gulp-stylefmt,每次保存任何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/'));
}

1 个答案:

答案 0 :(得分:2)

我想我已经使用以及 gulp.lastRun 重复@SvenSchoenung的解决方案1。在我的情况下,我没有 gulp-cached ,但我使用 gulp4

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