Как мне удалить все файлы, которые соответствуют базовому имени в массиве glob? - PullRequest
0 голосов
/ 03 января 2019

В моем gulpfile есть существующая задача build, которая преобразует коллекцию исходных файлов в файлы dist.У меня есть массив известных имен файлов, которые сообщают моей задаче build, с какими файлами работать:

sourceFiles: [
    "./js/source/hoobly.js",
    "./js/source/hoo.js"
    ]

Моя задача build создает следующие файлы из этого:

  • ./js/dist/hoobly.js
  • ./js/dist/hoobly.min.js
  • ./js/dist/hoobly.js.map
  • ./js/dist/hoobly.min.js.map
  • ./js/dist/hoo.js
  • ./js/dist/hoo.min.js
  • ./js/dist/hoo.js.map
  • ./js/dist/hoo.min.js.map

Теперь я хочу написать соответствующую задачу clean, которая удаляет файлы, сгенерированные во время моего buildзадача.К сожалению, я не могу просто удалить все файлы в каталоге ./js/dist/, так как в нем содержатся другие файлы, которые не генерируются рассматриваемой задачей build, поэтому я должен убедиться, что файлы, которые я удаляю, совпадают"basename" оригинала sourceFiles.

Мой вопрос: как мне использовать массив sourceFiles и "munging" *, чтобы я мог в итоге вызвать что-то вроде:

gulp.src(sourceFiles)
    .pipe(munge()) // I don't know what to do here!!
    .pipe(del());  // does a `del ./js/dist/hoobly.*`
                   // and a  `del ./js/dist/hoo.*`

(* Технический термин, "munge" ...)

Можете ли вы указать мне правильное направление?Я просмотрел различные пакеты NPM (виниловые пути, файлы gulp-map, gulp-glob, ...) и все больше и больше теряюсь.

1 Ответ

0 голосов
/ 03 января 2019

Я бы поменял глобусы перед тем, как передать их gulp.src:

var sourceFiles = [
    "./js/source/hoobly.js",
    "./js/source/hoo.js"
    ];
    
var filesToDelete = sourceFiles.map(f=>f.replace("/source/", "/dist/").replace(".js", ".*"));

console.log(filesToDelete)

и пропустите этот шаг munge:

gulp.src(filesToDelete).pipe(del())
...