javascript - 如何删除与 glob 数组中的基本名称匹配的所有文件?

标签 javascript gulp glob

我的 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 生成的其他文件> 任务有问题,因此我需要确保我删除的文件与原始 sourceFiles 的“basename”匹配。

我的问题是:如何使用 sourceFiles 数组并“咀嚼”*它,以便我最终可以调用如下内容:

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 包(vinyl-paths、gulp-map-files、gulp-glob,...),但我越来越迷失了。

最佳答案

在将 glob 传递给 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())

关于javascript - 如何删除与 glob 数组中的基本名称匹配的所有文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54019503/

相关文章:

Javascript/jssh 问题 Firefox 4.0b1

javascript - jqplot、highcharts、flot如何从轴刻度处捕获点击事件

javascript - 如何使用 javascript 从每个 JSON 对象中提取特定属性

bash - 全局安装的 NPM 包(带 CLI)返回命令未找到

node.js - 使用 Visual Studio 时可以在不同文件之间拆分 gulp 任务吗?

javascript - 使用在 Safari 中不起作用的新 url 重新加载 iframe src/location

gulp - 尽管有 _config.yml,但 Jekyll 破坏了 _site 中的目录。

python - 如何用python在文件中写入列表

graphql - NextJs 使用 loadFilesSync 或 glob 加载多个文件,

bash - 从 URL 中提取不同类型的协议(protocol)