Gulp 自动更新/自动生成文件上的无限观看循环

Gulp 自动更新/自动生成文件上的无限观看循环,gulp,infinite-loop,gulp-watch,jscs,gulp-jscs,Gulp,Infinite Loop,Gulp Watch,Jscs,Gulp Jscs,我正在尝试使用一些gulp插件(jscs,csscomb)在开发期间动态地设计代码 我遇到了一个问题,即gulp进程在格式化任务中运行无限循环 我相信会发生什么: 开始一项服务任务 将对所有任务执行初始运行,以便为临时服务器准备文件 本地临时服务器与监视任务并行启动 myfile.scss由开发人员更新 gulp watcher启动csscomb任务 csscomb插件更改文件并替换它 watcher任务看到文件替换的更改并再次启动格式化任务… csscomb插件再次运行,等等 下面是导致此

我正在尝试使用一些gulp插件(
jscs
csscomb
)在开发期间动态地设计代码

我遇到了一个问题,即gulp进程在格式化任务中运行无限循环

我相信会发生什么:

  • 开始一项
    服务
    任务
  • 将对所有任务执行初始运行,以便为临时服务器准备文件
  • 本地临时服务器与监视任务并行启动
  • myfile.scss
    由开发人员更新
  • gulp watcher启动csscomb任务
  • csscomb插件更改文件并替换它
  • watcher任务看到文件替换的更改并再次启动格式化任务…
  • csscomb插件再次运行,等等
下面是导致此循环的代码段。(注意:这使用了v4的气量)


有人知道避免这种情况的方法吗?

避免这种情况的方法是不要把修正放在观察者身上。使用两个单独的函数:一个修复,另一个不修复。只看不看的那个。例如:

function taskJscsFix() {
    return gulp.src(path.JS)
        .pipe(jscs({
            configPath: './gulp/.jscsrc',
            fix: true
        }))
        .pipe(gulp.dest(path.SRC.JS));
}

function taskScripts() {
    return gulp.src(path.JS)
        .pipe(jscs({
            configPath: './gulp/.jscsrc'
        }))
        .pipe(jscs.reporter())
        .pipe(gulp.dest(path.DEST.JS));
}

嗯,这主意不错,但一定有办法让手表运行修复程序。
function taskJscsFix() {
    return gulp.src(path.JS)
        .pipe(jscs({
            configPath: './gulp/.jscsrc',
            fix: true
        }))
        .pipe(gulp.dest(path.SRC.JS));
}

function taskScripts() {
    return gulp.src(path.JS)
        .pipe(jscs({
            configPath: './gulp/.jscsrc'
        }))
        .pipe(jscs.reporter())
        .pipe(gulp.dest(path.DEST.JS));
}