当前位置: 首页 > 面试题库 >

Glob / minimatch:如何使用gulp.src()进行所有操作,然后排除文件夹但在其中保留一个文件

夔博
2023-03-14
问题内容

我有一个像这样的项目:

root
  |-incl1
  |-incl2
  |- ...
  |-excl1
  |-excl2
     |- .gitignore  <-- keep this one
     |- (other files)  <-- exclude them

我需要写的gulp.src()将包括除excl1和之外的所有文件夹,excl2 保留.gitignore文件。

这是我的代码不起作用:

gulp.src([
  baseDir + '/**',
  '!' + baseDir + '/{excl1, excl1/**}'
  '!' + baseDir + '/excl2/{**, !.gitignore}'  // <-- doesn't work
], {dot: true})

问题答案:

这似乎可行:

gulp.src([
    baseDir + '/**',                              // Include all
    '!' + baseDir + '/excl1{,/**}',               // Exclude excl1 dir
    '!' + baseDir + '/excl2/**/!(.gitignore)',    // Exclude excl2 dir, except .gitignore
], { dot: true });

从全局匹配中排除单个文件非常棘手,因为在minimatch文档中没有类似的示例。

https://github.com/isaacs/minimatch

“如果模式以!字符开头,则否定”。



 类似资料:
  • 问题内容: 我遇到一种情况,我试图使用grunt来清理代码库,但不包括特定文件夹。 grunt在后台使用minimatch(类似于bsdglob)来匹配文件,但是我似乎无法弄清楚如何排除文件夹的.gitignore样式。 我想摄取这个: 并匹配这些: 但不符合以下条件: 这将匹配所有内容,包括ignoreme: 所以我想我可以做些类似的事情: 但这与ignoreme文件夹中的文件匹配。 我已经习惯

  • 问题内容: 我使用以下代码删除所有文件: 它将删除false 文件夹所在的位置。 我想删除文件夹及其所有子文件。 我该如何修改? 问题答案: 最简单的方法是使用Apache Commons IO库中的FileUtils.deleteDirectory。 请记住,这还将删除包含目录。 在gradle文件中添加此行以使用Apache

  • 是否有tar命令来排除子目录,但包括文件夹根目录中的每个文件,然后将它们放在特定路径上? 我想省略每个子目录,只保留文件的最大最小深度= 1。我尝试了以下方法,但不起作用:

  • 问题内容: 这个问题已经在这里有了答案 : 使用Java将文件从一个目录复制到另一个目录 (33个答案) 4年前关闭。 如何将一个文件夹及其所有子文件夹和文件复制到另一个文件夹中? 问题答案: Apache Commons IO可以为您解决问题。看看FileUtils。

  • 我想清除所有筛选规则,但保留筛选本身。 有没有直接快速的方法去做呢? 我找到的代码是: 它获取筛选器对象,我对筛选器#的选项数量是有限的。 注意:删除此筛选器,但我需要保留它。

  • 问题内容: 我需要从文件夹中读取所有“ .txt”文件(用户需要选择此文件夹)。 请告知如何做? 问题答案: 您可以使用类,这是非常简单的用法 只需创建一个实例,您想要如何覆盖接受方法