【问题标题】:Glob / minimatch: how to gulp.src() everything, then exclude folder but keep one file in itGlob / minimatch:如何 gulp.src() 一切,然后排除文件夹但在其中保留一个文件
【发布时间】:2014-12-16 14:43:49
【问题描述】:

我有一个这样的项目:

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

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

这是我的代码不起作用:

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

【问题讨论】:

  • 谁发明了 globstar 风格的语法应该下地狱。说真的。

标签: node.js gulp glob minimatch


【解决方案1】:

这似乎有效:

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

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

【讨论】:

  • 不完美。现在所有.gitignore's 在 excl2 下都被保留了。
  • 这对我来说不是什么大问题。谢谢,我试试。
  • 有效。甚至不需要花括号。
猜你喜欢
  • 2012-09-19
  • 1970-01-01
  • 1970-01-01
  • 2019-10-01
  • 1970-01-01
  • 2020-04-16
  • 2011-06-24
  • 1970-01-01
  • 2018-04-10
相关资源
最近更新 更多