【问题标题】:I want to automatically fix my CSS source files, but I get an endless loop我想自动修复我的 CSS 源文件,但我得到了一个无限循环
【发布时间】:2017-02-20 02:03:01
【问题描述】:

我使用 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/'));
}

【问题讨论】:

  • @SvenSchoenung 谢谢,但它有部分帮助。有总比没有好。现在它只运行两次:) 我应该删除我的问题吗?我是新来的。
  • 用一个应该只运行一次任务的解决方案编辑了答案。
  • 对于 gulp4 不需要安装 gulp-watch github.com/gulpjs/gulp/blob/4.0/docs/…?
  • 是的,gulp4 使用chokidar 作为内置的gulp.watch(),所以你不需要gulp-watch 插件。但是 gulp4 的任务系统也有很大的不同,所以如果不修改,答案在那里是行不通的。

标签: css gulp stylelint


【解决方案1】:

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

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

【讨论】:

  • 拥有如此简单的 gulp 4 解决方案真是太棒了。多年来,我一直在寻找这样的选择。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-22
相关资源
最近更新 更多