【问题标题】:How to write a glob in javascript to exclude and include the files?如何在 javascript 中编写一个 glob 来排除和包含文件?
【发布时间】:2017-01-09 22:47:42
【问题描述】:

我编写了以下代码行,其中包含一个用于从每个文件夹中排除文件的 glob:

 var images = gulp.src(['src/**/*.{png,svg,jpg,gif}', '!src/styles/images/abc/*.svg',
    '!src/styles/images/pqr/*card*.svg', '!src/styles/images/def/*.svg', '!src/styles/images/xyz/*.svg',
    '!src/styles/images/*-16.svg', '!src/styles/images/*[!16].svg', '!src/styles/images/svg-16/*.svg', 
    '!src/styles/images/uvw/*.png']).pipe(gulp.dest('build'));

如您所见,我几乎在所有地方都在重复src/styles/images。我怎样才能进一步简化这个 glob?是否有任何其他方法可以使我们可以使重复的路径通用并添加其余路径?

任何帮助和建议将不胜感激。

谢谢。

【问题讨论】:

  • 您可以使用 map 和 concat 数组,但老实说,您应该修复您的实际文件夹结构。
  • @BenjaminGruenbaum 是的,我想是的!我也会这样做。非常感谢您给我一个使用地图的想法。 :)

标签: javascript glob


【解决方案1】:

使用映射是我解决这个问题的想法

var src = ['src/**/*.{png,svg,jpg,gif}']
var stylesimages = [ 'abc/*.svg', 'pqr/*card*.svg', 'table/*.svg', 'xyz/*.svg', '*-16.svg', '*[!16].svg', 'svg-16/*.svg', 
    'uvw/*.png'].map(x => '!src/styles/images/' + x)

src = src.concat(stylesimages)

var images = gulp.src(src).pipe(gulp.dest('build'));

【讨论】:

  • 非常感谢。这真的很有帮助。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-31
相关资源
最近更新 更多