Глоток-изменен с глотком-конкат не работает
Я хочу собрать только .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'));
});