2

我正在尝试使用一些 gulp 插件(jscs, csscomb)在开发期间动态设置我的代码样式。

我在使用格式任务运行无限循环的 gulp 进程时遇到问题。

我相信会发生什么:

  • 开始某种serve任务
  • 对所有任务执行初始运行,为登台服务器准备文件
  • 本地登台服务器与监视任务并行启动
  • myfile.scss由开发人员更新
  • gulp watcher 启动 csscomb 任务
  • csscomb 插件更改文件并替换它
  • 观察者任务看到文件替换的变化并再次启动格式化任务......
  • csscomb 插件再次运行等等......

这是导致此循环的片段。(注意:这使用 v4 的 gulp)

'use strict'

import { task, parallel, series, src, dest, watch, plugins } from './gulp';

import { startStagingServer } from './servers';

import { solution } from './solution.map';

const path = require('path');

task('serve', parallel(startStagingServer, watchStyles);

function watchStyles() {
  watch([ solution.src.styles ], series(formatStyles, compileStyles))
}

function formatStyles(done) {
  return src([ solution.src.styles ])
    .pipe(plugins.csscomb())
    .pipe(dest(solution.src.mount)) // the root of the solution
}

function compileStyles() {
  return src([ solution.src.styles ])
    .pipe(plugins.sass().on('error', plug.sass.logError))
    .pipe(dest(path.join(solution.dest.stage, 'serve')));
}

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

4

1 回答 1

0

避免这种情况的方法是不要将修复程序放在观察者中。使用 2 个单独的功能:一个修复,另一个不修复。只看没有的。例子:

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));
}
于 2015-11-18T15:58:12.027 回答