Бесконечный цикл с автоматическим обновлением / созданием файлов

Я пытаюсь использовать некоторые плагины gulp (jscs, csscomb) стиль моего кода на лету во время разработки.

У меня проблема с процессом gulp, выполняющим бесконечный цикл с задачей форматирования.

Что я считаю, что происходит:

  • начать serve задача какая-то
  • начальный запуск выполняется со всеми задачами для подготовки файлов для промежуточного сервера
  • локальный промежуточный сервер запускается параллельно с задачей наблюдения
  • myfile.scss обновляется разработчиком
  • наблюдатель глотка запускает задачу csscomb
  • Плагин csscomb изменяет файл и заменяет его
  • задача наблюдателя видит изменение от замены файла и снова запускает задачу форматирования ...
  • плагин csscomb запускается снова и так далее...

Вот фрагмент, который вызывает этот цикл. (Примечание: здесь используется версия 4)

'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')));
}

Кто-нибудь знает способ избежать этого?

1 ответ

Чтобы избежать этого, не нужно помещать исправление в наблюдателя. Используйте 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));
}
Другие вопросы по тегам