节点glob模式包括除某些文件夹外的所有js

时间:2015-03-12 21:09:36

标签: node.js node-glob

我有一个看起来像这样的项目

ls foo/
- file0.js
- a/file1.js
- b/file2.js
- c/file3.js
- d/file4.js

如何写一个glob pattern排除c& d文件夹但获取所有其他javascript文件?我看了here作为一个例子,但无法得到任何工作。

我想解决方案看起来与此类似:

glob('+(**/*.js|!(c|d))', function(err, file) {
  return console.log(f);
});

我想要回来

- file0.js
- a/file1.js
- b/file2.js

2 个答案:

答案 0 :(得分:1)

我在自述文件中有一个忽略选项:

glob('**/*.js', { ignore: '{c,d}/**' }, cb)

这将从匹配中排除两个c + d文件夹。更多here

答案 1 :(得分:1)

对于没有第二个参数设置排除的环境,我们可以使用以下示例中演示的模式来实现这种例外:

模式

/src/**/!(els)/*.scss

结构

/src/style/kit.scss
/src/style/els/some.scss
/src/style/els/two.scss

结果

它将仅选择/src/style/kit.scss

我们可以使用http://www.globtester.com/进行在线快速测试。

enter image description here

更新

如果我们正在与 Gulp任务运行器合作。或提供其他或多个排除参数的其他工具或类。或者只是多个也支持排除的全局选择器。然后,我们可以像下面的示例一样进行gulp show:

对于Gulp

我们传递一个数组而不是一个字符串(多个glob选择器,一个接一个地应用以添加更多文件或排除)

src(['src/style/**/*.{scss,sass}', '!(src/style/els/**)'])

我们可以有多个排除项

watch(['src/style/**/*.{scss,sass}', '!(src/style/els/**)', '!(src/style/_somefileToExclude.scss)'])

在gulp中,您可以将其与支持数组作为globs选择器的任何方法一起使用。 srcwatch是我用的。

注意::如果您要排除文件夹及其所有子文件夹,请使用上面的**而不是**/*,这将不起作用。如果需要某些特定的文件类型(扩展名),则可以使用**/*.scss