В моем gulpfile у меня есть задача, которая обрабатывает все мои страницы, и другая задача, которая отслеживает изменения на моих страницах и обрабатывает только измененную страницу. Это выглядит так:
const buildPages = path => cb => {
gulp.src(path)
// some lines of piping
.pipe(gulp.dest(pages.dist));
cb();
}
const watchPages = () =>
gulp.watch(pages.src).on('change', path =>
gulp.src(path)
// the same piping as above
.pipe(gulp.dest(pages.dist))
);
Метод .on()
объекта наблюдателя chokidar, возвращаемый gulp.watch()
, не получает функцию обратного вызова, в то время как для задачи gulp над ней требуется такая функция. Таким образом, чтобы удалить дублирование кода, я могу сделать это:
const buildPages = path =>
gulp.src(path)
// some lines of piping
.pipe(gulp.dest(pages.dist));
const buildPagesWithCallback = path => cb => {
buildPages(path)
cb();
}
const watchPages = () =>
gulp.watch(pages.src).on('change', path =>
buildPages(path)
);
Это правильный путь или есть способ удалить дублирование, не создавая дополнительную функцию (возможно, заставив наблюдателя получить обратный вызов)?