繁体   English   中英

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

[英]How do I delete all files that match the basename in an array of globs?

我的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

我的问题是:我该如何使用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软件包(乙烯基路径,gulp-map-files,gulp-glob等),但我越来越迷路了。

我会gulp.src传递给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())

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM