Глоток-изменен с глотком-конкат не работает

Я хочу собрать только .less файлы, которые были изменены, чтобы ускорить мой рабочий процесс отладки / кодирования.

Вот мое задание глотка:

gulp.src('core/**/*.less')
  .pipe(changed('core'))
  .pipe(less().on('error', handleError))
  .pipe(autoprefixer('last 2 version'))
  .pipe(remember())
  .pipe(concat('main.min.css'))
  .pipe(gulp.dest('core'))
  .on('end', resolve)
  .on('error', reject);

я использовал gulp-changed и потому что сначала это не сработало, я попытался использовать gulp-remember как хорошо, но без эффекта. Часы работают, они очень быстро компилируются, но никак не влияют.

Если я удалю changed('core') а также remember() это работает, но это медленнее (около 16 секунд).

1 ответ

Решение

gulp-changed плохо подходит для вашего варианта использования, так как он предназначен для сравнения входных файлов с выходными файлами на диске.

Скажем, у вас есть входной файл core/foo/bar.less что ты трубишь через changed('dist'), Что это делает, чтобы искать выходной файл dist/foo/bar.less, Если входной файл новее выходного файла, он пропускается. В противном случае это отфильтровано.

Это означает использование changed('core') не может работать Сравнивает входной файл core/foo/bar.less с выходным файлом core/foo/bar.less, Но они в одном файле. Это означает, что входной файл никогда не может быть новее выходного файла и никогда не передается.

Есть еще одна проблема. У вас нет одного выходного файла для каждого входного файла. Все твои .less файлы скомпилированы в один main.min.css файл. Хотя вы можете сделать эту работу с помощью собственного компаратора, он не работает сразу после установки.

То, что вы на самом деле хотите, это gulp-cached, Вместо того, чтобы сравнивать каждый входной файл с выходным файлом на диске, он сравнивает каждый входной файл с предыдущей версией того же файла, который был кэширован в памяти.

var cached = require('gulp-cached');

gulp.task('css', function() {
  return gulp.src('core/**/*.less')
    .pipe(cached('less'))
    .pipe(less())
    .pipe(autoprefixer('last 2 version'))
    .pipe(remember('less'))
    .pipe(concat('main.min.css'))
    .pipe(gulp.dest('core'));
});
Другие вопросы по тегам