Современная cборка Gulp 5 — удаление и копирование — 3 часть
В предыдущей статье (Современная cборка Gulp для веб-разработки — 2 часть) мы продолжили создавать современную сборку Gulp
, используя ES-модули
и строгий режим. Продолжим её совершенствовать.
Добавляем плагин del
Для очистки папки с результатами (./dist
), чтобы в ней не скапливались уже удаленные с исходников и не нужные файлы, установим плагин del
. Для этого в терминале наберём:
npm i -D del
В папке gulp/task
создадим файл del.mjs
import { deleteAsync } from 'del'; export const del = () => { return deleteAsync('dist'); }
Импортируем эту задачу в gulpfile.js
добавив строку:
import { del } from './gulp/tasks/del.mjs'; // удаление
и добавим задачу в сценарий:
// Определение сценария задач const build = gulp.series(del, gulp.parallel(styles, scripts, html), gulp.parallel(serve, watch));
Добавление задачи копирования
Иногда нужно просто перенести файлы и/или папки как есть без изменений в папку с результатом.
Напишем для этого новую задачу.
Паку для этих целей назовём files
и расположим в исходниках src/tiles
.
Определим новые пути для копирования в файле gulp/config/path.js
... files: { src: './src/files/**/*.*', dest: './dist/files' } ...
В папке gulp/task
создадаём файл copy.mjs
export const copyFiles = () => { return app.gulp.src(app.paths.copy.src, { encoding: false }) .pipe(app.gulp.dest(app.paths.copy.dest)) }
Импортируем эту задачу в gulpfile.js
добавив строку:
import { copyFiles } from './gulp/tasks/copy.mjs'; // копирование
Вставим нашу задачу в сценарий:
// Определение сценария задач const build = gulp.series(del, copyFiles, gulp.parallel(styles, scripts, html), gulp.parallel(serve, watch));
Давайте будем следить за изменениями в папке srs/files
и переносить новые файлы в dist/files
прописав новую строку в наблюдателе:
// Отслеживание изменений function watch() { ... gulp.watch(paths.copy.src, copyFiles); }
Теперь добавляя файлы и папки в папку srs/files
они буду автоматически переноситься в dist/files
Удаление без перезагрузки
Но сейчас при удалении файла с исходников, он останется в папке dist/files
и удалится оттуда, только при перезапуске сборки.
Давайте сделам так, чтобы при удалении файла с исходников, он удалялся и из папки dist/files
без перезапуска сборки.
Добавим в файл gulp/task/del.mjs
еще одну задачу:
export const delFiles = () => { return deleteAsync(app.paths.copy.dest); }
И в файле gulpfile.js
пропишем её в импорте:
import { del, delFiles } from './gulp/tasks/del.mjs'; // удаление
Для удобства создадим переменную с серией задач (т.е. они будут выполнятся друг за другом):
const files = gulp.series(delFiles, copyFiles);
Заменим переменную copyFiles
в наблюдателе на files
:
// Отслеживание изменений function watch() { ... gulp.watch(paths.copy.src, files); }
Теперь все действия с файлами и папками в папке srs/files
буду синхронизированы с папкой dist/files
Заключение
Мы продолжили создавать современную сборку Gulp
и рассмотрели котирование и удаление файлов и папок с помощью плагина del
.
P.S.
В следущей статье мы продолжем дополнять и совершенствовать эту сборку.
Продолжение следует.