У меня есть задача gulp, которая генерирует конкатенированные файлы JS. Я использую часы для обнаружения изменений во всех файлах в проекте и хотел бы, чтобы задача concat повторно объединяла файлы только в том случае, если исходные файлы изменились с момента последнего выполнения.
примечание: я мог бы использовать более конкретные команды наблюдения, но в моем реальном производственном случае мы генерируем несколько объединенных файлов JS из нескольких комбинаций исходных файлов JS, поэтому создание часов и задач для каждого из них намного сложнее.
Что-то вроде этого:
gulp.task('scripts', function() {
return gulp.src('src/**/*.js')
.pipe(cache('scripts'))
// If no changed files in pipeline, exit pipeline,
// else add in all src files again
.pipe(concat('app.js'))
.pipe(gulp.dest('build/'));
});
Я думал об использовании lazypipe для последних двух шагов, поэтому я запускаю concat и dest только в том случае, если есть файлы, но я не знаю, как это сделать:
- Запустите условие, основанное на том, остались ли какие-либо файлы в конвейере (после cache()
- Верните все исходные файлы (по сути, снова перевыпустите gulp.src(), чтобы перезапустить поток)
Я знаю, что мог бы использовать gulp-remember для второй части, но в моем производственном случае было бы намного чище просто перестроить поток, если это возможно.
Кто-нибудь делал это раньше или есть какие-либо намеки, с чего начать?